FPG-Alan / leetcode

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

03. 无重复字符的最长子串

FPG-Alan opened this issue · comments

https://leetcode.cn/problems/longest-substring-without-repeating-characters/

滑动窗口
左右指针, 初始指向0, result 为 0

  1. 检查右指针指向的字符是否存在(Map记录)
  2. 若不存在, len+1, 右指针+1
  3. 若存在,
    • map中移除左指针目前指向的值, 左指针+1
    • len-1, result更新为max(result, len)
  4. 最后输出 max(result, len)
    var lengthOfLongestSubstring = function(s) {
      const exist = new Map();
      let left = 0, right = 0;
      let result = 0
      let len = 0;
      while(right < s.length) {
          const nextChar = s[right];
          if(exist.has(nextChar)) {
              exist.delete(s[left++])
              result = Math.max(result, len--);
          }else{
              exist.set(nextChar, true);
              len++;
              right++;   
          }
      }
      return Math.max(result, len);
};