目标
给你一个由小写英文字母组成的字符串 s 。
请你找出字符串中两个字符 a1 和 a2 的出现频次之间的 最大 差值 diff = a1 - a2,这两个字符需要满足:
- a1 在字符串中出现 奇数次 。
- a2 在字符串中出现 偶数次 。
返回 最大 差值。
示例 1:
输入:s = "aaaaabbc"
输出:3
解释:
字符 'a' 出现 奇数次 ,次数为 5 ;字符 'b' 出现 偶数次 ,次数为 2 。
最大差值为 5 - 2 = 3 。
示例 2:
输入:s = "abcabcab"
输出:1
解释:
字符 'a' 出现 奇数次 ,次数为 3 ;字符 'c' 出现 偶数次 ,次数为 2 。
最大差值为 3 - 2 = 1 。
说明:
- 3 <= s.length <= 100
- s 仅由小写英文字母组成。
- s 至少由一个出现奇数次的字符和一个出现偶数次的字符组成。
思路
统计字符串中字符的出现频次,计算奇数频次最大值与偶数频次最小值的差。
代码
/**
* @date 2025-06-10 8:42
*/
public class MaxDifference3442 {
public int maxDifference(String s) {
int[] cnt = new int[26];
char[] chars = s.toCharArray();
for (char c : chars) {
cnt[c - 'a']++;
}
int oddMax = 0;
int evenMin = Integer.MAX_VALUE;
for (int i : cnt) {
if (i == 0) {
continue;
}
if (i % 2 == 1) {
oddMax = Math.max(i, oddMax);
} else {
evenMin = Math.min(i, evenMin);
}
}
return oddMax - evenMin;
}
}