跳至主要內容

最长无覆盖子串

Mr.He小于 1 分钟滑动窗口

最长无覆盖子串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长连续子字符串 的长度。

输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子字符串是 "abc",所以其长度为 3

滑动窗口解决

/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function(s) {
    let left = 0, right = 0;
    const window = {}
    let result = 0
    while(right < s.length){
        const c = s[right]
        window[c] = window[c] ? window[c] + 1 : 1
        right++
        while(window[c]>1){
            const f = s[left]
            left++
            window[f]--
        }
        result = Math.max(result, right-left)
    }
    return result
};