#include<iostream> #include<stdio.h> #include<stdlib.h> #include<math.h> #include<string> #include<algorithm> #include<map> #include<vector> #include<queue> using namespace std; //题目是统计出现最多的单词,key:分割给定字符串后map计数 bool check(char c){ //检查字符c是否为[0,9] [A,Z] [a,z] if(c>='0'&&c<='9') return true; if(c>='a'&&c<='z') return true; if(c>='A'&&c<='Z') return true; return false; } int main(){ map<string, int> count; //count计数字符串出现的次数 string str; getline(cin,str); //读入整行字符串 int i=0; //定义下标 while(i<str.length()){ //在字符串范围内 string word; //单词 //下面这个while分割出一个个单词并map while(i<str.length() && check(str[i])==true ){//如果是单词的话 ,注意第一个条件 if(str[i] >= 'A' && str[i] <='Z'){ str[i]+=32; //将大写字母转换为小写字母 } word+=str[i] ;//单词末尾添加该字符,之前没写过这种。。 i++; //下标后移1位 } if(word!=""){ //单词非空,令次数加1 if(count.find(word) == count.end() ) count[word]=1; //单词不存在,count赋值为1 else count[word]++; } while(i<str.length() && check(str[i])==false) { //注意加第一个条件,否则会爆内存 i++; //跳过非单词字符 } } //大外层while结束 string ans; //存放出现次数最多的单词 int MAX=0; //出现最多的单词的次数 for(map<string,int>::iterator it=count.begin() ; it!=count.end() ; it++){ if(it->second > MAX){ //寻找出现次数最多的单词 MAX=it->second; ans=it->first; } } cout<<ans<<" "<<MAX; system("pause"); return 0; }