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}