Skip to content

Commit 2519a61

Browse files
committed
One-Hundred-Sixty-Five Commit: Add Frequency Sort problem to Top K Elements section
1 parent 65b4743 commit 2519a61

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package Top_K_Elements;
2+
3+
// Problem Statement: Frequency Sort (medium)
4+
// LeetCode Question: 451. Sort Characters By Frequency
5+
6+
import java.util.HashMap;
7+
import java.util.Map;
8+
import java.util.PriorityQueue;
9+
10+
public class Problem_6_Frequency_Sort {
11+
public String sortCharacterByFrequency(String str) {
12+
13+
Map<Character, Integer> characterFrequencyMap = new HashMap<>();
14+
for (char chr : str.toCharArray()) {
15+
characterFrequencyMap.put(chr, characterFrequencyMap.getOrDefault(chr, 0) + 1);
16+
}
17+
18+
PriorityQueue<Map.Entry<Character, Integer>> maxHeap =
19+
new PriorityQueue<Map.Entry<Character, Integer>>(
20+
(e1, e2) -> e2.getValue() - e1.getValue());
21+
22+
maxHeap.addAll(characterFrequencyMap.entrySet());
23+
24+
StringBuilder sortedString = new StringBuilder(str.length());
25+
while (!maxHeap.isEmpty()) {
26+
Map.Entry<Character, Integer> entry = maxHeap.poll();
27+
for (int i = 0; i < entry.getValue(); i++)
28+
sortedString.append(entry.getKey());
29+
}
30+
return sortedString.toString();
31+
}
32+
}

0 commit comments

Comments
 (0)