const fn = (str) => {
let i =0, j = 0
let maxLength = 0
const set = new Set() // 新建一个set对象
// 如果数组长度为0,则直接返回0
if(str.length === 0) {
return maxLength
}
// 如果字符长度不为0,则执行该循环
for(i; i< str.length; i++) {
// set对象中不包含该字符,添加进入set对象,更新数组长度
if(!set.has(str[i])){
set.add(str[i])
maxLength = Math.max(maxLength, set.size)
} else {
// 如果set对象包含该字符,则进入该循环
while(set.has(str[i])){
//set中有重复元素不断让j++ 并删除窗口之外的元素 直到滑动窗口内没有重复的元素
set.delete(str[j])
j++ // j小标加1
}
set.add(str[i])
}
}
return maxLength
}
// s = "abcabcbb"
// s = "bbbbb"
s = "pwwkew"
console.log(fn(s))
console