解题思路:
这里的思路就是sliding window,滑动窗口,具体自行查阅blog.csdn.net/weixin_4398…
- 创建一个set
- 两个指针,一个指向字符串的开头 = j,一个随着循环遍历 = i
- 如果set里面没有s[i],说明还没有重复的字符,把s[i]添加到set里,然后更新最大不重复字符的数量
- 如果set里面有s[i],则从set里面删除s[j],并且递增j,再检查set里有没有s[i],反复直到set里没有s[i]
- 重复步骤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;
};