3. Longest Substring Without Repeating Characters

25 年 10 月 7 日 星期二
202 字
2 分钟

3. Longest Substring Without Repeating Characters

Screenshot 2025-10-07 at 11.49.52 pm

思路:滑动窗口,如果 [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
}

文章标题:3. Longest Substring Without Repeating Characters

文章作者:Sirui Chen

文章链接:https://blog.siruichen.me/posts/3_longest_substring_without_repeating_characters[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。