/**
* @param {string} s
* @return {number}
*/
// 解法1
// var lengthOfLongestSubstring = function(s) {
// let arr = []
// let max = 0
// for(let i = 0
// let index = arr.indexOf(s[i])
// if(index>-1){
// arr.splice(0,index+1)
// }
// arr.push(s[i])
// max = Math.max(max,arr.length)
// }
// return max
// }
// 解法2
var lengthOfLongestSubstring = function (s) {
const set = new Set()
let i = 0,//滑动窗口右边界
j = 0,//滑动窗口左边界
maxLength = 0
if (s.length === 0) {//极端情况
return 0
}
for (i
if (!set.has(s[i])) {//当前元素不在set中 就加入set 然后更新最大长度,i++继续下一轮循环
set.add(s[i])
maxLength = Math.max(maxLength, set.size)
} else {
//set中有重复元素不断让j++ 并删除窗口之外的元素 直到滑动窗口内没有重复的元素
while (set.has(s[i])) {
set.delete(s[j])
j++
}
set.add(s[i])
}
}
return maxLength
}