451. Sort Characters By Frequency
Given a string, sort it in decreasing order based on the frequency of characters.
Example 1:
Input:
"tree"
Output:
"eert"
Explanation:
'e' appears twice while 'r' and 't' both appear once.
So 'e' must appear before both 'r' and 't'. Therefore "eetr" is also a valid answer.
Example 2:
Input:
"cccaaa"
Output:
"cccaaa"
Explanation:
Both 'c' and 'a' appear three times, so "aaaccc" is also a valid answer.
Note that "cacaca" is incorrect, as the same characters must be together.
Example 3:
Input: "Aabb" Output: "bbAa" Explanation: "bbaA" is also a valid answer, but "Aabb" is incorrect. Note that 'A' and 'a' are treated as two different characters.
按照字符出现次数对字符串排序
C++:
1 class Solution { 2 public: 3 string frequencySort(string s) { 4 unordered_map<char,int> cntMap ; 5 for(char c : s){ 6 cntMap[c]++ ; 7 } 8 vector<vector<char>> buckets(s.size()+1) ; 9 for(auto m : cntMap){ 10 buckets[m.second].push_back(m.first) ; 11 } 12 string res = "" ; 13 for(int i = buckets.size()-1 ; i >= 0 ; i--){ 14 for(char c : buckets[i]){ 15 for(int j = 0 ; j < i ; j++){ 16 res += c ; 17 } 18 } 19 } 20 return res ; 21 } 22 };