451--根据字符出现频率排序(map的api)
题目
给定一个字符串 s ,根据字符出现的 频率 对其进行 降序排序 。一个字符出现的 频率 是它出现在字符串中的次数。
返回 已排序的字符串 。如果有多个答案,返回其中任何一个。
示例 1:
输入: s = "tree"
输出: "eert"
解释: 'e'出现两次,'r'和't'都只出现一次。
因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。
链接:https://leetcode.cn/problems/sort-characters-by-frequency
题解
点击查看代码
package Com.Xu.Sort;
import java.util.*;
public class FourFiveOne {
public static String frequencySort(String s) {
Map<Character,Integer> map=new HashMap<>();
int length=s.length();
for(int i=0;i<length;i++){
char c=s.charAt(i);
int fre=map.getOrDefault(c,0)+1;
map.put(c,fre);
}
List<Character> list=new ArrayList<>(map.keySet());
Collections.sort(list,(a,b)->map.get(b)-map.get(a));
StringBuffer sb=new StringBuffer();
int size=list.size();
for(int i=0;i<size;i++){
char c=list.get(i);
int fre=map.get(c);
for(int j=0;j<fre;j++){
sb.append(c);
}
}
return sb.toString();
}
public static void main(String[] args) {
String s="Aabb";
System.out.println(frequencySort(s));
}
}

浙公网安备 33010602011771号