451. Sort Characters By Frequency Solution 1 (time O(n*log(n)), space O(1)) class Solution { public String frequencySort(String s) { Map<Character, Integer> d = new HashMap<Character, Integer>(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); int freq = d.getOrDefault(c, 0) + 1; d.put(c, freq); } List<Character> d_list = new ArrayList<Character>(d.keySet()); Collections.sort(d_list, (a, b) -> d.get(b) - d.get(a)); StringBuffer sb = new StringBuffer(); for (int i = 0; i < d_list.size(); i++) { char c = d_list.get(i); for (int j = 0; j < d.get(c); j++) { sb.append(c); } } return sb.toString(); } }