题目链接:点击打开链接
知识点笔记:
<cctype>下几个常用方法
转小写tolower和转大写toupper
isalpha如果是字母,返回一个非零数;否则返回为0
isalnum如果是字母或数字,返回一个非零数;否则返回为0
isdigit如果是数字(0-9)返回一个非零数;否则返回为0
本题需要注意的是:要在word不为空时count++,否则word为空也会算进去。还有,如果i到最后一位,不管当前位是不是字母数字,都得将当前这个word放到map里
AC代码:
#include <iostream>
#include <map>
#include <cctype>
using namespace std;
int main() {
map<string,int> count;
string str,word;
getline(cin,str);
for(int i=0;i<str.length();i++)
{
if(isalnum(str[i]))
{
str[i]=tolower(str[i]);
word+=str[i];
}
if(!isalnum(str[i])||i==str.length()-1)
{
if(word.length()!=0) count[word]++;
word="";
}
}
int Max=0;
for(map<string,int>::iterator it=count.begin();it!=count.end();it++){
if(it->second > Max){
Max = it->second;
word = it->first;
}
}
printf("%s %d",word.c_str(),Max);
return 0;
}