每个字符最多出现两次的最长子字符串

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

  • 输入: s = “bcbbbcba”
    输出: 4
    解释:
    以下子字符串长度为 4,并且每个字符最多出现两次:”bcbbbcba”。

  • 输入: s = “aaaa”
    输出: 2
    解释:
    以下子字符串长度为 2,并且每个字符最多出现两次:”aaaa”。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var maximumLengthSubstring = function(s) {
let ans = 0, left = 0, right = 0;
const map = new Map();
while(left <= right && right < s.length) {
if ((map.get(s[right]) || 0) < 2) {
map.set(s[right], (map.get(s[right]) || 0) + 1);
ans = Math.max(ans, right - left + 1);
right++;
} else {
map.set(s[left], (map.get(s[left]) || 0) - 1);
left++;
}
}
return ans;
};