3. Longest Substring Without Repeating Characters

思路:滑动窗口,如果 [i, j] 区间内有重复字符,移动左指针,删除Set元素,直到没有重复为止。如果没有重复字符。移动右指针增加Set元素,直到有重复为止
js
/**
* @param {string} s
* @return {number}
*/
// 思路:滑动窗口,如果 [i, j] 区间内有重复字符,移动左指针,删除Set元素,直到没有重复为止。
// 如果没有重复字符。移动右指针增加Set元素,直到有重复为止
var lengthOfLongestSubstring = function (s) {
const n = s.length
if (n === 0) return 0
let i = 0,
j = 1
let ans = 0
const set = new Set(s[0])
while (j < n) {
if (!set.has(s[j])) {
ans = Math.max(ans, j - i + 1)
set.add(s[j])
j++
} else {
set.delete(s[i++])
}
}
return ans ? ans : 1
}