给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。原生JS实现
时间: 2023-10-14 13:07:01 浏览: 77
以下是使用双指针和哈希表实现的原生JS代码:
```javascript
function lengthOfLongestSubstring(s) {
let n = s.length;
let map = new Map(); // 哈希表,记录字符出现的位置
let ans = 0; // 最长子串长度
let i = 0, j = 0; // 双指针
while (i < n && j < n) {
if (!map.has(s[j])) {
// 如果当前字符不在哈希表中,将其加入哈希表,并将右指针右移
map.set(s[j], j++);
ans = Math.max(ans, j - i);
} else {
// 如果当前字符在哈希表中,将左指针右移一位,并删除哈希表中对应字符及其之前的所有字符
map.delete(s[i++]);
}
}
return ans;
}
```
该算法的时间复杂度为 O(n),其中 n 为字符串的长度。
阅读全文