题解 | #单词识别#
单词识别
https://www.nowcoder.com/practice/16f59b169d904f8898d70d81d4a140a0
#include <iostream> #include<map> #include <string> #include <vector> #include<algorithm> using namespace std; class Greater { public: bool operator()(pair<string, int> p1, pair<string, int> p2) { return p1.second > p2.second; } }; int main() { string cinst; getline(cin, cinst);//cinst为句子 map<string,int> countmap; //分隔为单词 int i=0,j=0; while(i<cinst.size()) { while(cinst[j]!=' '&&cinst[j]!='.')//找单词的位置, { j++; } string substr1=cinst.substr(i,j-i); if(i==0) { substr1[0]+=32; } countmap[substr1]++; i=++j; } //countmap已经统计好了次数(value),并按string(key)排序 //现在开始放入vector中,再按照value排序 vector<pair<string,int>> v1(countmap.begin(),countmap.end()); stable_sort(v1.begin(),v1.end(),Greater());//按value;否则按pair //排完序后遍历输出 for(pair<string,int> e:v1) { cout<<e.first<<':'<<e.second<<endl; } return 0; } // 64 位输出请用 printf("%lld")