frequencce

 avatar
unknown
java
24 days ago
928 B
2
Indexable
import java.util.*;

class Solution {
    public String frequencySort(String s) {
        HashMap<Character, Integer> fmap = new HashMap<>();
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            fmap.put(ch, fmap.getOrDefault(ch, 0) + 1);
        }

        ArrayList<Character> keys = new ArrayList<>(fmap.keySet());
        PriorityQueue<Character> pq = new PriorityQueue<>((Character t, Character o) -> {
            return fmap.get(o) - fmap.get(t);
        });

        for (int i = 0; i < keys.size(); i++) {
            pq.add(keys.get(i));
        }

        StringBuilder sb = new StringBuilder();
        while (pq.size() > 0) {
            char ch = pq.remove();
            int fre = fmap.get(ch);
            while (fre > 0) {
                sb.append(ch);
                fre--;
            }
        }
        return sb.toString();
    }
}
Leave a Comment