451--根據字元出現頻率排序(map的api)
阿新 • • 發佈:2022-05-29
題目
給定一個字串 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)); } }