描述
给定一个字符串,请将字符串里的字符按照出现的频率降序排列。
分析
思路一:构建字符的词频键值对map,导出keyset,给keyset排序,拼接字符串。
思路二:把字符串转成字符数组,排序,再拼接起来。
思路一的代码:
class Solution {
public String frequencySort(String s) {
Map<Character,Integer> map = new HashMap<>();
for(int i = 0; i < s.length(); i++){
if(map.containsKey(s.charAt(i))){
map.put(s.charAt(i),map.get(s.charAt(i))+1);
}else{
map.put(s.charAt(i),1);
}
}
List<Character> list = new ArrayList<>(map.keySet());
Collections.sort(list,new Comparator<Character>(){
public int compare(Character a, Character b){
if(map.get(a) != map.get(b)){
return map.get(b) - map.get(a);
}
return a - b;
}
});
StringBuffer sb = new StringBuffer();
for(char ch : list){
for(int i = 0; i < map.get(ch); i++){
sb.append(ch);
}
}
return sb.toString();
}
}