Skip to content

Latest commit

 

History

History
26 lines (24 loc) · 804 Bytes

451.md

File metadata and controls

26 lines (24 loc) · 804 Bytes

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();
    }
}