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.
这道题其实就是先算频率再排序,再一次append入一个string中。
append函数的第一个参数是指加入的字符的个数,学到了for的参数还可以这样写pair
class Solution {
public:
static bool cmp(pair<char,int>a,pair<char,int>b){
return a.second>b.second;
}
string frequencySort(string s) {
map<char,int>hashmap;
vector<pair<char,int>>pairArray;
string result="";
for(int i=0;i<s.size();i++){
hashmap[s[i]]++;
}
for(pair<char,int>pair:hashmap){
pairArray.push_back(pair);
}
sort(pairArray.begin(),pairArray.end(),cmp);
for(pair<char,int>pair:pairArray){
result.append(pair.second,pair.first);
}
return result;
}
};