思路: 统计次数最多且字典序最小的单词。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'
vector<string>v;
map<string, int>mp;
int main()
{
string str;
getline(cin, str);
for (int i = 0; i < str.size(); ++i)
{
if (str[i] >= 'A' && str[i] <= 'Z')
str[i] = (str[i] - 'A') + 'a';
}
string ans = "";
for (int i = 0; i < str.size(); ++i)
{
if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= '0' && str[i] <= '9'))
{
ans += str[i];
}
else
{
if (ans != "")
{
v.push_back(ans);
mp[ans]++;
}
ans = "";
}
}
if ((str[str.size() - 1] >= 'a' && str[str.size() - 1] <= 'z') || (str[str.size() - 1] >= '0' && str[str.size() - 1] <= '9'))
{
v.push_back(ans);
mp[ans]++;
}
string res = "";
int len = 0;
for (int i = 0; i < v.size(); ++i)
{
if (len == mp[v[i]] && res > v[i])
res = v[i];
if (len < mp[v[i]])
{
res = v[i];
len = mp[v[i]];
}
}
cout << res << " " << len;
return 0;
}