# 3.无重复字符的最长子串
# 题目
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
# 示例
输入: "abcabcbb"
输出: 3
输入:"bbbbb"
输出: 1
输入:'pwwkew'
输出:3
1
2
3
4
5
6
7
8
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
2
3
4
5
6
7
8
9
10
11
12