题目:
给定一个字符串,请将字符串里的字符按照出现的频率降序排列。
示例1:
输入:
"tree"
输出:
"eert"
解释:
'e'出现两次,'r'和't'都只出现一次。
因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。
解题思路:
本题是考查数据结构运用的模拟题。
1. 先使用哈希表对词频进行统计;
2. 遍历统计好词频的哈希表,将每个键值对对象以{字符,词频}的形式存储到大顶堆中。
3. 从大顶堆中依次弹出,构造答案字符串。
代码示例:
public String frequencySort(String s) {
char[] array = s.toCharArray();
StringBuilder res = new StringBuilder();
Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i < array.length; i++) {
if (map.get(array[i]) == null)
map.put(array[i], 1);
else map.put(array[i], map.get(array[i]) + 1);
}
Set<