求一个字符串中最长无重复字符子字符串长度js 源字符串:abcabcabc 子字符串:abca,abc,ab, a 无重复字符的子字符串:abc,ab, a无重复字符的最长子字符串:abc返回结果:3
时间: 2024-10-23 18:12:35 浏览: 14
要找到给定字符串中最长无重复字符子字符串的长度,可以使用滑动窗口(sliding window)算法。这里以JavaScript为例来实现:
```javascript
function lengthOfLongestSubstring(s) {
let maxLength = 0;
let charMap = {};
let left = 0;
for (let right = 0; right < s.length; right++) {
if (charMap[s[right]]) { // 如果遇到重复字符
left = Math.max(charMap[s[right]] + 1, left); // 更新左边界,跳过重复字符的区间
}
charMap[s[right]] = right; // 更新字符映射
maxLength = Math.max(maxLength, right - left + 1); // 更新最长子串长度
}
return maxLength;
}
// 示例
const inputString = "abcabcabc";
console.log(lengthOfLongestSubstring(inputString)); // 输出:3
```
在这个代码中,我们维护了一个字符映射`charMap`用于记录每个字符最后一次出现的位置,以及一个双指针`left`和`right`表示当前查找区间的左右边界。当遇到重复字符时,我们更新左边界以跳过重复字符,然后继续计算新的最长子串长度。
阅读全文