试例:
一、思路
建立一个空的数组来维护滑动窗口
从字符串第0位开始,依次向后遍历
如果该位置上的字符不在数组中,则把该字符push进数组
如果该字符在数组中,则把数组中该字符及其之前的元素从数组中删除
继续向后遍历
图片来自网络二、用到的两个重要方法
indexOf: 返回数组中某个指定元素的位置,如果没有这个元素,则返回 -1
splice:用于添加或删除数组中的元素,有三个参数(起始下标(必须),删除个数,增加的新元素)
三、代码如下:
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function(s) {
let arr = [];
let max = 0;
for(let i=0; i<s.length; i++) {
let index = arr.indexOf(s[i]); //判断该元素在数组的位置以及该元素是否存在与数组中
if(index !== -1) {
arr.splice(0, index+1); //删除数组中该重复元素及其之前的所有元素
}
arr.push(s[i]);
max = Math.max(arr.length, max); //获取最大值
}
return max;
};
网友评论