451. Sort Characters By Frequency

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.

Example 3:

Input:
"Aabb"

Output:
"bbAa"

Explanation:
"bbaA" is also a valid answer, but "Aabb" is incorrect.
Note that 'A' and 'a' are treated as two different characters.
题目含义:按字母出现次数的降序重排字符串

复制代码
 1     public String frequencySort(String s) {
 2         Map<Character, Integer> map = new HashMap<>();
 3         for (int i = 0; i < s.length(); i++) {
 4             map.put(s.charAt(i), map.getOrDefault(s.charAt(i), 0)+1);
 5         }
 6         PriorityQueue<Map.Entry<Character, Integer>> pq = new PriorityQueue<>(
 7                 new Comparator<Map.Entry<Character, Integer>>() {
 8                     @Override
 9                     public int compare(Map.Entry<Character, Integer> a, Map.Entry<Character, Integer> b) {
10                         return b.getValue() - a.getValue();
11                     }
12                 }
13         );
14         pq.addAll(map.entrySet());
15         StringBuilder sb = new StringBuilder();
16         while (!pq.isEmpty()) {
17             Map.Entry<Character, Integer> e = pq.poll();
18             for (int i = 0; i < e.getValue(); i++) {
19                 sb.append(e.getKey());
20             }
21         }
22         return sb.toString();        
23     }
复制代码

 

posted @   daniel456  阅读(117)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示