讲话模式


每个人讲话都有口头禅,现在给出一个字符串,需要求出其中出现次数最多的单词

输入

输入一行,若干个长度小于或等于 10 的只包含大小写字母的字符串。

输出

输出一行,为出现次数最多的单词和它出现的次数,以一个空格隔开。如果出现次数最多的单词有多个,则输出字典序最小的那个。这个单词必须完全以小写的形式输出。注意,所说的单词不区分大小写字母。

样例

1
Can a can can a can It can
1
can 5

代码

  1. 解法1:定义两个变量string、int,轮回最终保留一个出现次数最多的结果,如果有多个则保留字典序最小的单词。
  2. 解法2:当处理完所有的数据后,遍历一遍数组保留最终的结果。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include<iostream>
#include<map>
#include<string>
using namespace std;

map<string, int> mp;
string ans;//最终答案
int count;//答案出现的次数

int main() {
string t;
//大小写转换
while (cin >> t) {
for (int i = 0; i < t.size(); ++i) {
if (t[i] >= 'A' && t[i] <= 'Z') {
t[i] += ('a' - 'A');
}
}
mp[t]++;
}
//数据处理 使用有序map
for (auto it = mp.begin(); it != mp.end(); ++it) {
if (it->second > count) {
ans = it->first;
count = it->second;
}
}
cout << ans << " " << count << endl;
return 0;
}