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; };