[算法题]不重复字符串

164 阅读1分钟

问:给一个字符串,求不重复的最大子串

首先是否重复,可以用Set来判断; 用滑动窗口来解决,还需要设定左右指针

/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function(s) {
    let max = new Set()
    for (let i = 0; i < s.length; i++) {
        let temp = new Set()
        let right = i
        while(right < s.length && !temp.has(s[right])) {
            temp.add(s[right])
            right++
        }
        if (temp.size > max.size) {
            max = temp
        }

    }
    return max.size
};

O(n)