思路:
1.创建一个set
2.创建两个指针i和j,第一个指针i随循环遍历字符串,第二个指针j指向字符串第一个元素
3.如果set结构里面没有string[i]那么将其添加到set里并更新maxLength的值
4.如果set里面有string[i],则从set里面删除string[j]并且递增j,再检查set里面是否有string[i],如此往复知道set里面没有string[i]为止
5.重复3,4直到遍历完字符串
6.返回maxLength
// sliding window划窗算法
const lengthOfLongestSubstring = string => {
const set = new Set();
let i = 0,
j = 0,
maxLength = 0;
if (string.length === 0) return 0;
for (i; i < string.length; i++) {
if (!set.has(string[i])) {
set.add(string[i]);
maxLength = Math.max(maxLength, set.size);
} else {
while (set.has(string[i])) {
set.delete(string[j]);
j++;
}
set.add(string[i]);
}
}
return maxLength;
};
const s = 'abcabcbb';
console.log(lengthOfLongestSubstring(s));