1. 程式人生 > >Add to List 451. Sort Characters By Frequency

Add to List 451. Sort Characters By Frequency

解決上述問題,需要思考兩個問題:

1、如何統計string字串中的每個字元出現的頻率;

2、如何按照字元出現的頻率從高到底的輸出每個字元。

以下是解決上述問題的兩個方法:

1、使用hash_map雜湊表來統計每個字元出現的頻率;

2、使用最大優先佇列將字元出現的頻率依次入隊,並排序。

class Solution {
public:
    string frequencySort(string s) {
        string res="";
        unordered_map<char,int> hash; //記錄每個字元出現的次數
        priority_queue<pair<int,char>> que; //優先佇列對字元出現的頻率進行排序,並將兩個值反過來
        
        //統計每個字元出現的頻率
        for(char ch:s){
            hash[ch]++;
        }
        
        //將每一個字元按照出現的頻率加入到佇列中去
        for(auto ha:hash){
            que.push(make_pair(ha.second,ha.first));
        }
        
        //迴圈取出佇列中的字元和字元的頻率
        while(!que.empty()){
            auto top=que.top();
            que.pop();
            res.append(top.first,top.second);
        }
        
        return res;
    }
};