目标
给你一个字符串 s ,请找出满足每个字符最多出现两次的最长子字符串,并返回该子字符串的 最大 长度。
示例 1:
输入: s = "bcbbbcba"
输出: 4
解释:
以下子字符串长度为 4,并且每个字符最多出现两次:"bcbbbcba"。
示例 2:
输入: s = "aaaa"
输出: 2
解释:
以下子字符串长度为 2,并且每个字符最多出现两次:"aaaa"。
说明:
- 2 <= s.length <= 100
- s 仅由小写英文字母组成。
思路
返回字符串 s 所有子串中每个字符出现次数不超过两次的最长子串长度。
滑动窗口。
代码
/**
* @date 2026-08-14 8:44
*/
public class MaximumLengthSubstring3090 {
public int maximumLengthSubstring(String s) {
int n = s.length();
int[] cnt = new int[26];
int l = 0;
int res = 0;
for (int r = 0; r < n; r++) {
int i = s.charAt(r) - 'a';
cnt[i]++;
while (cnt[i] > 2){
cnt[s.charAt(l++) - 'a']--;
}
res = Math.max(res, r - l + 1);
}
return res;
}
}
性能
