Cho chuỗi, sắp xếp các ký tự theo tần suất giảm dần.
Ví dụ: "abbbacbcc" → "bbbbcccaa".
Giải thuật
- Đếm tần suất bằng
map. - Chuyển sang vector pair
(freq, char). - Sắp xếp giảm dần theo freq.
- Xây chuỗi kết quả: lặp
freqlần thêmchar.
Ví dụ code
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
string frequencySort(string s) {
vector<pair<int,char>> v;
map<char,int> m;
for (char c : s) m[c]++;
for (auto& p : m) v.push_back({p.second, p.first});
sort(v.rbegin(), v.rend());
string ans;
for (auto& p : v) ans.append(p.first, p.second);
return ans;
}
};
int main() {
Solution ob;
cout << ob.frequencySort("abbbacbcc");
return 0;
}
Input
"abbbacbcc"
Output
bbbbcccaa