思路:
1.创建一个set
2.两个指针,第一个指向字符串的开头 j,第二个随着for循环遍历字符串 i
3.如果set里没有s[i],说明目前为止还没有重复的字符串,把s[i]添加到set里,然后更新最大不重复字符的数量
4.如果set里有s[i],则从set里删除s[j],并且递增j,再检查set里是否有s[i],
如此反复直到set里没有s[i]为止
5.重复步骤3和4,直到遍历完整个字符串
解题过程:
代码如下:
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 };