给定一个字符串,请找出该字符串中不含重复字符的最长子串,返回该子串的长度,用js(v8)编写
时间: 2024-09-14 19:12:01 浏览: 50
要解决这个问题,我们可以使用一种称为“滑动窗口”的技术。具体步骤如下:
1. 初始化两个指针,分别表示当前考虑的子串的起始位置和结束位置,同时使用一个集合(或其他数据结构)来记录当前子串中的字符。
2. 移动结束位置指针,将其向右移动,同时检查即将加入的字符是否已经存在于集合中。
3. 如果不存在,则将其加入集合,并更新最长子串的长度。
4. 如果存在,则移动起始位置指针,直到集合中不再包含即将加入的字符为止。在移动过程中,不断检查并更新最长子串的长度。
5. 重复步骤2-4,直到结束位置指针到达字符串的末尾。
以下是使用JavaScript(V8引擎)实现上述逻辑的代码:
```javascript
function lengthOfLongestSubstring(s) {
let maxLength = 0;
let start = 0;
let end = 0;
const charSet = new Set();
while (end < s.length) {
if (!charSet.has(s[end])) {
charSet.add(s[end++]);
maxLength = Math.max(maxLength, charSet.size);
} else {
charSet.delete(s[start++]);
}
}
return maxLength;
}
// 示例:
const inputString = "abcabcbb";
const result = lengthOfLongestSubstring(inputString);
console.log(result); // 输出应该是3,因为最长的不含重复字符的子串是"abc"
```
阅读全文