描述
输入一个只包含小写英文字母和数字的字符串,按照不同字符统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASCII码由小到大排序输出。
数据范围:字符串长度满足 1≤len(str)≤1000
输入描述:
一个只包含小写英文字母和数字的字符串。
输出描述:
一个字符串,为不同字母出现次数的降序表示。若出现次数相同,则按ASCII码的升序输出。
示例1
输入:
aaddccdc
输出:
cda
说明:
样例里,c和d出现3次,a出现2次,但c的ASCII码比d小,所以先输出c,再输出d,最后输出a.
AC code
/// HJ102 字符统计
#include <bits/stdc++.h>
using namespace std;
bool cmp(pair<char, int> a, pair<char, int> b)
{
if(a.second==b.second)
return a.first<b.first;
return a.second>b.second;
}
int main()
{
string str;
getline(cin, str);
map<char, int> mp;
for(int i=0; i<str.size(); i++)
mp[str[i]]++; // 逐个统计字符出现次数
vector<pair<char, int>> v(mp.begin(), mp.end());
sort(v.begin(), v.end(), cmp); // 按要求进行排序
for(auto it:v)
cout<<it.first;
cout<<endl;
return 0;
}