Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Sort Characters By Frequency trong C++


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 freq lần thêm char.

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