# 3.无重复字符的最长子串

# 题目

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

# 示例

输入: "abcabcbb"
输出: 3

输入:"bbbbb"
输出: 1

输入:'pwwkew'
输出:3
1
2
3
4
5
6
7
8

# 思路

解题思路: 使用一个数组来维护滑动窗口

遍历字符串,判断字符是否在滑动窗口数组里

  • 不在则 push 进数组
  • 在则删除滑动窗口数组里相同字符及相同字符前的字符,然后将当前字符 push 进数组
  • 然后将 max 更新为当前最长子串的长度

遍历完,返回 max 即可

# 别人的答案

var lengthOfLongestSubstring = function(s) {
    let arr = [], max = 0
    for(let i = 0; i < s.length; i++) {
        let index = arr.indexOf(s[i])
        if(index !== -1) {
            arr.splice(0, index+1);
        }
        arr.push(s.charAt(i))
        max = Math.max(arr.length, max) 
    }
    return max
};
1
2
3
4
5
6
7
8
9
10
11
12