451. Sort Characters By Frequency - cocoder39/coco39_LC GitHub Wiki

451. Sort Characters By Frequency

public String frequencySort(String s) {
        int NUM_CHAR = 256;
        int[] frequencies = new int[NUM_CHAR];
        for (char ch : s.toCharArray()) {
            frequencies[ch] += 1;
        }
        
        List<Character>[] buckets = new List[s.length() + 1];
        for (int i = 0; i < NUM_CHAR; i++) {
            int freq = frequencies[i];
            if (freq > 0) {
                if (buckets[freq] == null) {
                    buckets[freq] = new ArrayList<>();
                }
                buckets[freq].add((char) i);
            }
        }
        
        StringBuilder sb = new StringBuilder();
        for (int i = buckets.length - 1; i >= 0; i--) {
            if (buckets[i] != null) {
                for (char ch : buckets[i]) {
                    for (int j = 0; j < i; j++) {
                        sb.append(ch);
                    }
                }
            }
        }
        return sb.toString();
    }
⚠️ **GitHub.com Fallback** ⚠️