3. 无重复字符的最长子串

3. 无重复字符的最长子串

 思路:

创建一个队列,在队列里采用窗口滑动模式,向右挪到。

1、创建一个new Set() 构造函数

2、定义两个指针(嵌套for循环),第一个指针指向字符串开头不动 (j),第二个随着for循环移动遍历字符串(i)

3、如果set里面没有s[i] ,说明还没重复的字符串 把 s[i] 添加到 set里,并检查是否要改变最大不重复字符maxLength的值。

4、如果set里面有 s[i],就从set里删除s[i],并递增 j,接着检查set里是否有s[i],如此反复直到 set 里没有s[i],

5、重复步骤 3、4直到遍历完整个队列。

代码:

/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function(s) {
    const set = new Set();
    let i=0,j=0, maxLength=0;
    if(s.length===0){
            return 0;
        }
    
    for(i;i<s.length;i++){
        if(!set.has(s[i])){
            set.add(s[i]);
            maxLength = Math.max(maxLength,set.size);
        }else{
            while(set.has(s[i])){
                set.delete(s[j]);
                j++;
            }
            set.add(s[i]);
        }
    }
    return maxLength;
};
原文地址:https://www.cnblogs.com/jervy/p/14273773.html