/**
* @Description 词频统计并按照词频排序的问题
* 新知识点
* Collections.sort(list,(a,b) -> map.get(b) - map.get(a));
* 把List里的元素,按照一个指定的规则,从大到小排序,就是b - a
* @Date 2022/1/12 11:17 下午
* @Author wuqichuan@zuoyebang.com
**/
public class Solution {
public String frequencySort(String s) {
Map<Character,Integer> map = new HashMap<>();
for(int i = 0; i < s.length(); i++){
int f = 0;
f = map.getOrDefault(s.charAt(i),0) + 1;
map.put(s.charAt(i),f);
}
List<Character> list = new ArrayList<Character>(map.keySet());
Collections.sort(list,(a,b) -> map.get(b) - map.get(a));
StringBuffer sb = new StringBuffer();
for(Character c : list){
Integer f = map.get(c);
for(int i = 0; i <f; i++){
sb.append(c);
}
}
return sb.toString();
}
}