1071 Speech Patterns (25 分)
题目入口: https://pintia.cn/problem-sets/994805342720868352/problems/994805398257647616
思想
注意处理结尾边界情况 使用map记录每个符合条件的单词出现个数 isalnum判断是否为数字或字母 tolower转换字母为小写 迭代器的使用查找最频繁单词 使用string比较单词字典序大小 到这里讲解结束
代码
#include <iostream>
#include <unordered_map>
#include <cstdio>
#include <cctype>
#include <string>
using namespace std
;
unordered_map
<string
, int> mp
;
int main(){
string ori
, word
= "";
getline(cin
, ori
);
for (int i
= 0; i
< ori
.size(); i
++){
if (isalnum(ori
[i
])){
word
+= tolower(ori
[i
]);
if (i
== ori
.size()-1){
mp
[word
]++;
word
= "";
}
}
else {
if (word
!= ""){
mp
[word
]++;
word
= "";
}
}
}
int Max
= -1, once
= 0;
string ret
= "";
unordered_map
<string
, int>::iterator it
;
for (it
= mp
.begin(); it
!= mp
.end(); it
++){
if (it
->second
== Max
){
if (!once
){
ret
= it
->first
;
once
= 1;
}
else if (it
->first
< ret
) ret
= it
->first
;
}
else if (it
->second
> Max
){
Max
= it
->second
;
ret
= it
->first
;
}
}
cout
<< ret
<< " " << Max
<< endl
;
return 0;
}