给定一个字符串 s ,根据字符出现的 频率 对其进行 降序排序 。一个字符出现的 频率 是它出现在字符串中的次数。
返回 已排序的字符串 。如果有多个答案,返回其中任何一个。
class MyOrder{
public:
bool operator()(pair<char, int> a, pair<char, int> b) {
return a.second > b.second;
}
};
class Solution {
public:
string frequencySort(string s) {
unordered_map<char, int> m;
vector<pair<char, int>> v;
for (auto temp : s) m[temp]++;
for (auto it = m.begin(); it != m.end(); ++it) v.push_back(*it);
sort(v.begin(), v.end(), MyOrder());
string res;
for (int i = 0; i < v.size(); ++i) {
for (int j = 0; j < v[i].second; ++j) {
res.push_back(v[i].first);
}
}
return res;
}
};