求一个字符串中最长无重复字符子字符串长度js 源字符串:abcabcabc 子字符串:abca,abc,ab,a 无重复字符的子字符串:abc,ab,a 无重复字符的最长子字符串:abc 返回结果:3
时间: 2024-10-23 15:12:32 浏览: 14
要找到一个字符串中最长无重复字符子字符串的长度,你可以使用滑动窗口的方法。以下是一个JavaScript示例来实现这个功能:
```javascript
function lengthOfLongestSubstring(s) {
let maxLength = 0;
let start = 0;
const charMap = {};
for (let end = 0; end < s.length; end++) {
if (charMap[s[end]]) { // 如果当前字符已经在map中,更新开始位置
start = Math.max(start, charMap[s[end]] + 1);
}
charMap[s[end]] = end; // 更新字符映射
maxLength = Math.max(maxLength, end - start + 1); // 每次更新最大长度
}
return maxLength;
}
// 示例
const sourceString = "abcabcabc";
console.log(lengthOfLongestSubstring(sourceString)); // 输出:3
```
这段代码定义了一个名为`lengthOfLongestSubstring`的函数,它接收一个字符串`s`作为参数。它使用一个哈希表`charMap`存储每个字符最后一次出现的位置,然后遍历字符串,每次遇到重复字符时,更新开始位置`start`以跳过重复部分。最后返回最长无重复字符子字符串的长度。
对于给定的字符串"abcabcabc",最长无重复字符子字符串是"abc",其长度为3,与题目描述相符。
阅读全文