题目描述
思路:使用大顶堆
方法一:
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();
}
}