#include <iostream>
using namespace std;
#include <string>
#include <set>
#include <cctype>
#include <list>
bool mySort(pair<char, int> p1, pair<char, int> p2)
{
bool res;
if (p1.second > p2.second)
{
res = true;
}else if(p1.second < p2.second)
{
res = false;
}
else if (p1.second == p2.second)
{
if (p1.first > p2.first)
{
res = false;
}
else{
res = true;
}
}
return res;
}
int main()
{
string str;
getline(cin, str);
multiset<char> ch;
for (char i : str)
{
ch.insert(i);
}
char a = 'a';
list<pair<char, int>> lst;
for (int i = 0; i <= 25; i++, a++)
{
if (ch.count(a) != 0)
{
lst.push_back(pair<char, int>(a, ch.count(a)));
}
}
char b = '0';
for (int i = 0; i <= 9; i++, b++)
{
if (ch.count(b) != 0)
{
lst.push_back(pair<char, int>(b, ch.count(b)));
}
}
lst.sort(mySort);
for (auto p : lst)
{
cout << p.first;
}
}
利用multiset为字符计数,再使用list存储统计后的信息,最后通过自己写的排序函数完成排序后输出

京公网安备 11010502036488号