1. 具体题目

给定一个字符串,请将字符串里的字符按照出现的频率降序排列。

示例 1:  输入: "tree"  输出: "eert"  解释: 'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。

2.思路分析

桶排序,思路同 leetcode347(https://www.cnblogs.com/XRH2019/p/11959468.html)

注意:向字符串中添加字符用 StringBuffer,直接用"string" + char 会超出时间限制

3. 代码

 public String frequencySort(String s) {
HashMap<Character,Integer> map = new HashMap<>();
for(int i = 0; i < s.length(); i++){
char c = s.charAt(i);
map.put(c, map.getOrDefault(c,0) + 1);
}
List<Character>[] frequency = new ArrayList[s.length() + 1];
for(char key : map.keySet()){
int index = map.get(key);
if(frequency[index] == null){
frequency[index] = new ArrayList<>();
}
frequency[index].add(key);
}
StringBuffer ans = new StringBuffer();
for(int i = frequency.length - 1; i >= 0; i--){
if(frequency[i] == null) continue;
for(char c : frequency[i]){
for(int count = 0; count < i; count++){
ans.append(c);
}
}
}
return ans.toString();
}

最新文章

  1. 关于MVC中Start.cs文件的作用
  2. GIF录制神器GifCam
  3. 环信Restfull API dotnetSDK
  4. zk master-slaver机制
  5. 如何自定义kindeditor编辑器的工具栏items即去除不必要的工具栏或者保留部分工具栏
  6. nginx root &amp;&amp; alias 文件路径配置
  7. PowerDesigner导出的sql中去掉双引号,主要用于Oracle
  8. DROP TABLE ** CASCADE CONSTRAINTS PURGE删除表的时候级联删除从表外键
  9. How to drop a PostgreSQL database if there are active connections to it?
  10. request.getParameter与request.getAttribute()
  11. WPF之无法触发KeyDown或者KeyUp键盘事件
  12. Swift语言 1小时速学教程
  13. 中间人攻击之arp欺骗 科普ARP欺骗
  14. php魔法常量
  15. HDU 2454 Degree Sequence of Graph G(Havel定理 推断一个简单图的存在)
  16. xcode调试
  17. JavaScript 格式化时间
  18. JAVA,JSP,Servlet获取当前工程路径-绝对路径
  19. python笔记六(函数的参数、返回值)
  20. [Swift]LeetCode47. 全排列 II | Permutations II

热门文章

  1. TensorFlow 安装报错的解决办法
  2. c#catch循环内捕获到异常继续循环
  3. falcon的api
  4. azkaban简单使用
  5. simple_pt时遇到的问题
  6. USTC现代软件工程--summary
  7. 【知识强化】第三章 存储系统 3.4 主存储器与CPU的连接
  8. linux改变内核参数
  9. 天启android5.1系统无法在非1650批次号的rk3288w芯片上启动
  10. [CSS布局]简单的CSS三列布局