Add to List 451. Sort Characters By Frequency
阿新 • • 發佈:2019-01-04
解決上述問題,需要思考兩個問題:
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; } };