题目:3442. 奇偶频次间的最大差值 I
思路 :哈希,时间复杂度0(n)。
用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。
C++版本:
class Solution {
public:
int maxDifference(string s) {
int a[26];
memset(a,0,sizeof a);
for(auto c:s){
a[c-'a']++;
}
int mn=INT_MAX,mx=INT_MIN;
for(int i=0;i<26;i++){
if(a[i]%2==1){
mx=max(mx,a[i]);
}else if(a[i]!=0){
mn=min(mn,a[i]);
}
}
return mx-mn;
}
};
JAVA版本:
class Solution {
public int maxDifference(String s) {
int[] a=new int[26];
Arrays.fill(a,0);
for(var c:s.toCharArray()){
a[c-'a']++;
}
int mn=Integer.MAX_VALUE,mx=Integer.MIN_VALUE;
for(int i=0;i<26;i++){
if(a[i]%2==1){
mx=Math.max(mx,a[i]);
}else if(a[i]!=0){
mn=Math.min(mn,a[i]);
}
}
return mx-mn;
}
}
Go版本:
func maxDifference(s string) int {
var a [26]int
for _,c:=range s {
a[c-'a']++
}
mn,mx:=math.MaxInt,math.MinInt
for i:=range a {
if a[i]%2==1 {
mx=max(mx,a[i])
}else if a[i]!=0 {
mn=min(mn,a[i])
}
}
return int(mx-mn)
}