AlgoMaster Logo

Sort Characters By Frequency

s=tree
1public String frequencySort(String s) {
2    // Count frequency of each character
3    Map<Character, Integer> frequencyMap = new HashMap<>();
4    for (char c : s.toCharArray()) {
5        frequencyMap.put(c, frequencyMap.getOrDefault(c, 0) + 1);
6    }
7
8    // Create max-heap based on frequency
9    PriorityQueue<Character> maxHeap = new PriorityQueue<>((a, b) -> frequencyMap.get(b) - frequencyMap.get(a));
10    maxHeap.addAll(frequencyMap.keySet());
11
12    // Build result string
13    StringBuilder sb = new StringBuilder();
14    while (!maxHeap.isEmpty()) {
15        char c = maxHeap.poll();
16        int count = frequencyMap.get(c);
17        for (int i = 0; i < count; i++) {
18            sb.append(c);
19        }
20    }
21
22    return sb.toString();
23}
0 / 17
Input String:treeMax-Heap:size = 0(empty)