单词词频统计程序
输入大量单词,每个单词,一行,不超过20字符,没有 空格。 按出现次数从多到少输出这些单词及其出现次数 。出现次数相同的,字典序靠前的在前面。
输入样例:
this
is
ok
this
plus
that
is
plus
plus
输出样例:
plus 3
is 2
this 2
ok 1
that 1
代码:
#include<iostream>
#include<cstdio>
#include<set>
#include<map>
#include<algorithm>
#include<cstring>
using namespace std;
struct word
{
string wd;
int time;
};
struct rule
{
bool operator()(const word &w1,const word &w2)
{
if(w1.time!=w2.time)
return w1.time>w2.time;
else
return w1.wd<w2.wd;
}
};
int main()
{
ios::sync_with_stdio(false);
// freopen("in.txt","r",stdin);
string s;
map<string,int> mp;
set<word,rule> st;
map<string,int>::iterator p;
set<word,rule>::iterator i;
while(cin>>s)
{
mp[s]++;
}
for(p=mp.begin();p!=mp.end();p++)
{
word tmp;
tmp.wd=p->first;
tmp.time=p->second;
st.insert(tmp);
}
for(i=st.begin();i!=st.end();i++)
cout<<i->wd<<" "<<i->time<<endl;
return 0;
}