思路是先截取单词,通过map记录单词个数,再转存vector进行排序。
using namespace std;
typedef pair<string,int> Word;
bool cmp(Word w1,Word w2)
{
return w1.second>w2.second;
}
int main()
{
map<string,int> mp;
string s;
while(getline(cin,s))
{
for(int i=0,j=0;i<s.size();i++)
{
if(s[i]==' '||s[i]=='.')
{
string t=s.substr(j,i-j);
if(isupper(t[0]))
t[0]=tolower(t[0]);
j=i+1;
mp[t]++;
}
}
vector<Word> v(mp.begin(),mp.end());
sort(v.begin(),v.end(),cmp);
for(int i=0;i<v.size();i++)
cout<<v[i].first<<":"<<v[i].second<<endl;
}
return 0;
}