(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目: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]intfor _,c:=range s {a[c-'a']++}mn,mx:=math.MaxInt,math.MinIntfor 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)
}