将字符串中的数组降序排列
首先通过一个map存储字符串中每个字符对应的频率,再将字符与其频率组成一个pair,存到vec_pair容器中
通过设置cmp函数,对频率进行排序并输出,完成!
这道题有很多知识点,比如
auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型
make_pair是将两个属性合成一个pair对
使用优先队列?
class Solution {
public:
static int cmp(pair<char, int> &a, pair<char, int> &b){//要定义成static类型
return a.second > b.second;
}
string frequencySort(string s) {
string str = "";
unordered_map<int, int> map;
vector<pair<char, int>> vec_pair;
for(int i = 0; i < s.length(); i++)
map[s[i]]++;
for (auto it = map.begin(); it != map.end(); it++){
vec_pair.push_back(make_pair(it->first, it->second));
}
sort(vec_pair.begin(), vec_pair.end(), cmp);
for(auto it = vec_pair.begin(); it != vec_pair.end(); it++){
for(int i = 0; i < it->second; i++)
str += it->first;
}
return str;
}
};