给你一个字符串 s
,请找出满足每个字符最多出现两次的最长子字符串,并返回该
子字符串
的 最大 长度。
示例 1:
输入: s = "bcbbbcba"
输出: 4
解释:
以下子字符串长度为 4,并且每个字符最多出现两次:"bcbbbcba"
。
示例 2:
输入: s = "aaaa"
输出: 2
解释:
以下子字符串长度为 2,并且每个字符最多出现两次:"aaaa"
。
提示:
2 <= s.length <= 100
s
仅由小写英文字母组成。
代码:
class Solution {
public:
int maximumLengthSubstring(string s) {
int res = 0;
int left = 0;
int n = s.size();
unordered_map<char, int> hashmap;
for (int i = 0; i < n; i++) {
char c = s[i];
while (hashmap[c] == 2) {
hashmap[s[left]]--;
left++;
}
hashmap[c]++;
res = max(res, i - left + 1);
}
return res;
}
};