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.
class Solution {
public:
//桶排序。将相同长度的子串放到同一个桶中,最后利用桶排序
string frequencySort(string s) {
     //防止s="aaa" 插入 b[3] = "aaa";
vector<string> bucket(s.size()+1,"");
map<char,int> m;
string res;
for(int i=0;i<s.size();i++){
m[s[i]]++;
}
for(auto sub:m){
int n = sub.second;
int c = sub.first;
//长度为n的子串都放到bucket[n]
bucket[n].append(string(n,c));
}
//最后利用桶排序,倒序遍历桶即可
for(int i=bucket.size()-1;i>=0;i--){
res.append(bucket[i]);
}
return res;
}
};


最新文章

  1. javaScript生成二维码(支持中文,生成logo)
  2. word域1
  3. python编程关键字
  4. docker mysql
  5. Apache 常用伪静态配置
  6. 点餐APP 冲刺三总结
  7. maven中Rhino classes (js.jar) not found - Javascript disabled的处理
  8. 项目源码--Android视频MV类网站客户端
  9. web端和手机端测试有什么不同
  10. Could note find result map com.xxxx.entity.UserAccountDO
  11. Ajax 模糊查询的简单实现
  12. [SCOI2009] 迷路
  13. 004_Python高级特性(1):Iterators、Generators和itertools(参考)
  14. js设置睡眠N秒后再执行
  15. Hibernate.基础篇《二》. getOpenSession() 和 getCurrentSession() - 1
  16. pygame 入门实例
  17. me909e-821 拨号流程
  18. jQuery(六):value值操作
  19. vue实现点击关注之后及时更新列表
  20. JDK,常见数据结构解读

热门文章

  1. redis协议规范
  2. CSS字体属性与文本属性
  3. MeteoInfoLab脚本示例:Trajectory
  4. MeteoInfoLab脚本示例:多Y轴图
  5. Celery---一个懂得异步任务,延时任务,周期任务的芹菜
  6. composer 打印美化
  7. centOS7永久关闭防火墙(防火墙的基本使用(转)
  8. Jquery特效之=》仿京东多条件筛选特效
  9. [开源] .Net ORM FreeSql 1.10.0 稳步向行
  10. poj1011 Sticks (搜索经典好题)