描述
输入一个只包含小写英文字母和数字的字符串,按照不同字符统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASCII码由小到大排序输出。
本题含有多组样例输入
数据范围:字符串长度满足 1 \le len(str) \le 1000 \1≤len(str)≤1000
输入描述:
一个只包含小写英文字母和数字的字符串。
输出描述:
一个字符串,为不同字母出现次数的降序表示。若出现次数相同,则按ASCII码的升序输出。
示例1
输入:
aaddccdc 1b1bbbbbbbbb
复制输出:
cda b1
复制说明:
第一个样例里,c和d出现3次,a出现2次,但c的ASCII码比d小,所以先输出c,再输出d,最后输出a.
欢迎优化~
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
map<char,int>mp;
while(cin>>s)
{
mp.clear();
for(int i=0;i<s.length();i++)
{
mp[s[i]]+=1;
}
vector<pair<char,int>>vec(mp.begin(),mp.end());
stable_sort(vec.begin(),vec.end(),[](const pair<char,int>&a,const pair<char,int>& b)
{
return a.second>b.second;
});
for(auto iter=vec.begin();iter!=vec.end();++iter)
{
cout<<iter->first;
}
cout<<endl;
}
return 0;
}