题意:字符串中不同的两个可以消除,问最后还剩几个
思路:可以分解成三种情况,一种是出现最多的可以和其他的和直接抵消,或者说(2*max==n)
第二种是出现最多的比其他的和都大就是(2*max>n),第三种(2*max<n)就是最大的比其他的和小。
#include<bits/stdc++.h>
#define Max 0x7fffffff
#define LL long long
#define ULL unsigned long long
#define N 2000005
//#define int long long
#define mod 998244353
using namespace std;
char a[N]; int b[26];
int main() {
int T; scanf("%d", &T);
while (T--) {
int n; scanf("%d", &n);
int cnt, sum;
scanf("%s", a);
int Maxx = 0;
for (int i = 0; i < n; i++) {
b[a[i] - 'a']++;
Maxx = max(Maxx, b[a[i] - 'a']);
}
if (Maxx * 2 >= n)
printf("%d\n", Maxx * 2 - n);
else
printf("%d\n", n % 2);
memset(b, 0, sizeof(b));
}
}