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