在提交时有一个点没有过去,后来读题发现自己忽略了细节“如果有并列,则输出按字母序最小的那个字母。”,所以在循环里加一次判断并列的条件。
#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; }