题目
- 请从字符串中找出一个最长的不包含重复字符串的子字符串,计算该最长子字符串的长度。假设字符串中只包含‘a’~‘z’的字符。
例如,在字符串“arabcacfr”中,最长的不含重复字符的子字符串是“acfr”,长度为4。
leetcode地址:https://leetcode-cn.com/problems/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/
思路
- 双指针
代码
/**
* @param {string} s
* @return {number}
* 双指针
*/
var lengthOfLongestSubstring = function (s) {
if (!s) return 0
const map = {}
let left = 0
let right = 0
let max = 0
while (right < s.length) {
if (!map[s[right]]) {
map[s[right]] = true
} else {
while (s[left] !== s[right]) {
map[s[left]] = false
left++
}
left++
}
max = Math.max(max, right - left + 1)
right++
}
return max
}