#美团9.24笔试第一题

再简单一点用数组前26位存字母个数
#排序后找出所有的相同字符偶数和最大的基数
#include<bits/stdc++.h>
using namespace std;
int main()
{
int T; cin >> T;
for (int j = 0; j < T; j++)
{
string s;
cin >> s;
sort(s.begin(), s.end());
int ans = 0,maxji = 0, t = s.size();
int n = 1;
for (int i = 0; i < s.size()-1; i++)
{
if (s[i + 1] == s[i]) {
n++;
if (i == t - 2) { ans += n; }//以连续相同字符结尾
}
else {//计算后记得n更新为1
if (n % 2 == 0) { ans += n; n = 1; }//
else { maxji = max(maxji, n);
n = 1;
}
}
}
//最后一位是个新符号
if (s[t - 1] != s[t - 2]) { maxji = max(maxji, 1); }
ans += maxji;
cout << ans << endl;
}
}
全部评论
我用哈希表记录了出现次数为偶数的字母,并把出现次数加到最终结果中,然后对于出现次数为奇数的字母,我取其出现次数-1加到最终结果中,然后如果有奇数的字母的话,最终结果再加1。不知道是漏了哪种情况,我只过了一半多
点赞 回复 分享
发布于 2022-09-25 13:58 广东

相关推荐

牛客868257804号:九个中铁八个中建
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务