给定一个字符串,请将字符串里的字符按照出现的频率降序排列。用java实现
时间: 2024-01-22 21:18:43 浏览: 75
cyuyan.rar_1AAN_ranct2_用冒泡法把6个字符串进行降序排列
可以使用HashMap来统计每个字符出现的次数,然后再使用PriorityQueue来按照出现频率进行排序。
以下是Java代码实现:
```java
import java.util.*;
public class FrequencySort {
public String frequencySort(String s) {
Map<Character, Integer> map = new HashMap<>();
for (char c : s.toCharArray()) {
map.put(c, map.getOrDefault(c, 0) + 1);
}
PriorityQueue<Character> pq = new PriorityQueue<>((a, b) -> map.get(b) - map.get(a));
pq.addAll(map.keySet());
StringBuilder sb = new StringBuilder();
while (!pq.isEmpty()) {
char c = pq.poll();
int freq = map.get(c);
for (int i = 0; i < freq; i++) {
sb.append(c);
}
}
return sb.toString();
}
}
```
其中,map用来统计每个字符出现的次数,pq用来按照出现频率进行排序,sb用来存储排序后的字符串。在pq中,我们定义了一个比较器,使得出现次数多的字符排在前面。最后,依次取出pq中的字符,根据其出现次数将其加入sb中,最终返回sb.toString()即可。
阅读全文