# 无重复字符的最长子串

# 代码

解法:滑动窗口

1、构建一个数组,遍历字符串 2、若数组中无当前遍历的字符,则将当前字符加入到数组中;若数组中有当前遍历的字符,则删除数组中的该字符及其前面的字符 3、每次遍历时,对比当前maxLen和数组的长度,取大者赋值给maxLen,即maxLen永远保存的是最大长度

function getLongestSubstrLen(s) {
  if (s.length === 0) return 0;

  let maxLen = 0;
  let arr = []; // 滑动窗口
  for (let c of s) {
    let index = arr.indexOf(c);
    if (index !== -1) { // 为重复字符,删除该字符及其前面的字符
      arr.splice(0, index+1);
    }
    arr.push(c);
    maxLen = Math.max(maxLen, arr.length);
  }

  return maxLen;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
上次更新: 1/5/2022, 9:25:14 AM