[LeetCode] LeetCode451. 根据字符出现频率排序
题目描述
思路:使用大顶堆
方法一:
class Solution {
public String frequencySort(String s) {
// 1. HashMap统计词频
Map<Character, Integer> map = new HashMap<>();
for (char c : s.toCharArray()) {
map.put(c, map.getOrDefault(c, 0) + 1);
}
// 2. 放入大顶堆中
PriorityQueue<Map.Entry<Character, Integer>> heap = new PriorityQueue<>((e1, e2) -> e2.getValue() - e1.getValue());
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
heap.add(entry);
}
// 3. 拼接结果
StringBuilder sb = new StringBuilder();
while (!heap.isEmpty()) {
Map.Entry<Character, Integer> entry = heap.remove();
for (int i = 0; i < entry.getValue(); i ++) sb.append(entry.getKey());
}
return sb.toString();
}
}
本文作者:Ac_c0mpany丶
本文链接:https://www.cnblogs.com/keyongkang/p/17908378.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步