Skip to content

Latest commit

 

History

History
24 lines (21 loc) · 775 Bytes

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

File metadata and controls

24 lines (21 loc) · 775 Bytes
function lengthOfLongestSubstring(s) {
  // 利用滑动窗口的思路
  let window = new Map(); // 保存进入窗口的字符 其中 key 为字符  value 为该字符的下标
  let res = 0; // 初始化结果

  // 声明 l r 分别为窗口的左右指针
  for (let l = 0, r = 0; r < s.length; r++) {
    // 如果窗口中已经存在该字符 则更新 l
    if (window.has(s[r])) {
      l = Math.max(window.get(s[r]) + 1, l);
    }

    // 如果不存在则 更新结果
    res = Math.max(res, lr - l + 1);
    // 且保存字符及其下标到窗口内
    window.set(s[r], r);
  }
  // 遍历完成后返回结果
  return res;
}