7-3 詞頻統計 (30 分)
阿新 • • 發佈:2021-12-01
思路
使用map比較簡單,使用java更簡單
題解
#include<bits/stdc++.h> using namespace std; map<string,int> M; bool cmp(pair<string,int> a,pair<string,int>b) { if(a.second==b.second) return a.first<b.first; return a.second>b.second; } int main() { char c; string str; while(scanf("%c",&c)!=EOF) { if((c>='a'&&c<='z')||(c>='0'&&c<='9')||(c>='A'&&c<='Z')||(c=='_')) { if(c>='A'&&c<='Z') //將大寫字母轉換為小寫 { c=c-'A'+'a'; } if(str.length()<15) //只要沒超過15個字母這個單詞就可以繼續存 { str+=c; } } else if(c=='#'||str.length()>0) { if(str.length()>0){ M[str]++; } str.clear(); if(c=='#')break; } } vector<pair<string,int> > v(M.begin(),M.end()); sort(v.begin(),v.end(),cmp); //排序 int count=v.size()*0.1; cout<<v.size()<<endl; for(int i=0;i<count;i++) { cout<<v[i].second<<":"<<v[i].first<<endl; } return 0; }