在提交时有一个点没有过去,后来读题发现自己忽略了细节“如果有并列,则输出按字母序最小的那个字母。”,所以在循环里加一次判断并列的条件。
#include <iostream>
using namespace std;
int main() {
string s;
getline(cin, s);
int a[100001] = {0};
int max = 0;
char b;
for(int i = 0; i < s.length(); i++) {
if(s[i] >= 'A' && s[i] <= 'Z') {
s[i] = s[i] + 32;
}
if(s[i] >= 'a' && s[i] <= 'z') {
a[s[i] - '0']++;
if(a[s[i] - '0'] > max) {
max = a[s[i] - '0'];
b = s[i];
} else if(a[s[i] - '0'] == max) {
if(b > s[i]) {
b = s[i];
}
}
}
}
cout << b << " " << max;
return 0;
}