给定一个字符串,请将字符串里的字符按照出现的频率降序排列。
输入:"tree" 输出:"eert"
思路:
将字符串放入HashMap中,得到每个字符串的频率,在按字符串的频率排序,放入新的字符串中。
代码:
class Solution {
public String frequencySort(String s) {
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
int len = s.length();
for (int i = 0; i < len; i ++) {
char ch = s.charAt(i);
int fre = map.getOrDefault(ch, 0) + 1;
map.put(ch, fre);
}
StringBuilder sb = new StringBuilder();
List<Character> list = new ArrayList<Character>(map.keySet());
Collections.sort(list, (a, b) -> map.get(b) - map.get(a));
int size = list.size();
for (int i = 0; i < size; i ++) {
char ch = list.get(i);
int fre = map.get(ch);
for (int j = 0; j < fre;j ++) {
sb.append(ch);
}
}
return sb.toString();
}
}