给定字符串找出不含重复字符串的子串长度,JS
时间: 2024-09-09 10:06:27 浏览: 74
在JavaScript中,找到一个字符串中所有不包含重复字符的最长子串的长度,可以使用滑动窗口算法。这里有一个简单的步骤描述:
1. 初始化两个指针,`left` 和 `right`,分别指向字符串的起始位置。
2. 创建一个哈希集合(或称为Set)`seen`,用于存储当前子串中的字符。
3. 当`right`向右移动时,检查`right`位置的字符是否已经在`seen`中。如果不在,将该字符添加到`seen`中,同时更新`maxLength`(即最长子串长度)和`result`(最长子串)。
4. 如果在,移除`left`位置的字符(从`seen`中删除)并将`left`向右移动一位,直到`left`位置的字符不再存在于`seen`中。
5. 循环结束后,`maxLength`就是我们需要的答案。
下面是一个具体的实现示例:
```javascript
function lengthOfLongestSubstring(s) {
let left = 0;
let maxLength = 0;
let seen = new Set();
for (let right = 0; right < s.length; right++) {
if (!seen.has(s[right])) {
seen.add(s[right]);
maxLength = Math.max(maxLength, right - left + 1);
} else {
seen.delete(s[left]);
left++;
}
}
return maxLength;
}
```
你可以用这个`lengthOfLongestSubstring`函数来处理任何给定的字符串,例如`lengthOfLongestSubstring("abcabcbb")`将返回`3`,因为最长的无重复字符子串是`"abc"`。
阅读全文