题目描述
给定一个字符串,请将字符串里的字符按照出现的频率降序排列。
题目思路
使用到:unordered_map、vector、sort方法
1 利用unordered_map<char, int> map
存放每个字符以及出现的次数:[ b: 1 ] [ a:3 ] ...
2 利用vector<pair<char, int>> 将map中的数据存在vector容器中,依次进行push_back
3 利用algorithm中的sort方法对vector进行排序,结果为[ a:3 ] [ b:1 ]
4 遍历排序后的vector容器,依次将数据拼接起来:a + a + a, b = aaab;
注:相同次数,利用ASCII码顺序排序,需要在sort方法中改为
if (a.second == b.second) {
if ((a.first - '0') > (b.first - '0')) {
return a.first < b.first;
}
} else {
return a.second > b.second;