451. Sort Characters By Frequency 发表于 2022-01-17 12345678910111213141516171819202122232425262728293031323334353637383940class Solution { public String frequencySort(String s) { Map<Character, Integer> charToFrequencyMap = new HashMap<>(); int maxFrequency = 0; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); int frequency = charToFrequencyMap.getOrDefault(c, 0) + 1; maxFrequency = Math.max(frequency, maxFrequency); charToFrequencyMap.put(c, frequency); } StringBuilder[] sbArray = new StringBuilder[maxFrequency + 1]; for (Map.Entry<Character, Integer> entry : charToFrequencyMap.entrySet()) { char c = entry.getKey(); int frequency = entry.getValue(); StringBuilder sb = sbArray[frequency]; if (sb == null) { sbArray[frequency] = sb = new StringBuilder(); } sb.append(c); } StringBuilder resBuilder = new StringBuilder(); for (int i = maxFrequency; i > 0; i--) { StringBuilder sb = sbArray[i]; if (sb != null) { for (int j = 0; j < sb.length(); j++) { for (int k = 0; k < i; k++) { resBuilder.append(sb.charAt(j)); } } } } return resBuilder.toString(); }} Reference451. Sort Characters By Frequency