AcWing 5468. 最有价值字符串
原题链接
中等
作者:
小猫你可以吃芝士汉堡
,
2024-02-18 16:45:33
,
所有人可见
,
阅读 39
40ms题解:遍历字符串,开数组记录每个出现的次数
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 100010;
int n;
char A[N], B[N], C[N];
int cnt[100];
int get(char A[], int len)
{
memset(cnt, 0, sizeof cnt);
for(int i = 1;i <= len;i ++)
{
int t = A[i] - 'A';
cnt[t] ++;
}
int res = 0;
for(int i = 0;i < 100;i ++)
res = max(res, cnt[i]);
int t = len - res;
if(t == 0 && n == 1) res -= 1;
else res += min(t, n);
return res;
}
int main()
{
scanf("%d", &n);
scanf("%s%s%s",A + 1, B + 1, C + 1);
int m = strlen(A + 1);
if(n >= m)
{
puts("D");
return 0;
}
int a[3];
a[0] = get(A, m), a[1] = get(B, m), a[2] = get(C, m);
int max_num = max({a[0], a[1], a[2]});
int cnt = 0;
for(int i = 0;i < 3;i ++)
if(a[i] == max_num) cnt ++;
if(cnt > 1) puts("D");
else
{
if(max_num == a[0]) puts("A");
else if(max_num == a[1]) puts("B");
else puts("C");
}
return 0;
}