算法挑战40: 每个字符最多出现两次的最长子字符串

5 阅读1分钟

题目:

给你一个字符串 s ,请找出满足每个字符最多出现两次的最长子字符串,并返回该子字符串的 最大 长度。

思路:

依旧滑动窗口, 依旧重复字串, 依旧用哈希表存出现次数

代码:

var maximumLengthSubstring = function (s) {
    let map = new Map();
    let ans = 0;
    let left = 0;
    const n = s.length;

    for (let right = 0; right < n; right++) {
        const x = s[right];
        map.set(x, map.get(x) + 1 || 1);
        while (map.get(x) > 2 && left <= right) {
            const y = s[left];
            map.set(y, map.get(y) -1|| 0);
            left++;
        }
        ans = Math.max(ans, right - left + 1);
    }
    return ans;
};