输出给定字符串出现最多的字符串(小写输出)和出现次数。ios
所求字符串要求:字符中能够含有A-Z、0-9。spa
好比说题目给出的Can1,咱们能够转换成can1,can1就算一个字符串总体,而不是单独的取出can1里面的can来加一。code
先把大写字母所有转换成小写,而后再用map存储单词个数便可,简单用法。ci
有个特殊的数据要判断,不写的话牛客能够AC,可是PTA最后一组数据会报错。字符串
特例:给出的字符串最后一个字符若是不是'0'-'9'、'a'-'z'的话,单独算一个字符串判断。get
for循环的时候注意判断空字符串(空格)出现的状况string
也能够用sstreamstring来处理一下,均可以的io
#include<iostream> #include<string.h> #include<cmath> #include<map> using namespace std; #define inf 0x3f3f3f3f typedef long long ll; map<string,int> mp; int main() { string s; getline(cin,s); int l=s.length(); for(int i=0;i<l;i++) { if(s[i]>='A'&&s[i]<='Z') s[i]+=32; } string ss; for(int i=0;i<l;i++) { if((s[i]>='0'&&s[i]<='9')||(s[i]>='a'&&s[i]<='z')) ss+=s[i]; else if(ss!="") mp[ss]++,ss=""; } ss=s[l-1]; // 最后一个字符特判 if(!(s[l-1]>='0'&&s[l-1]<='9')||!(s[l-1]>='a'&&s[l-1]<='z')) mp[ss]++; string ans; int ma=0; for(auto&i:mp) { if(i.second>ma) ma=i.second,ans=i.first; } cout<<ans<<" "<<ma<<endl; return 0; }