mirror of
https://github.com/Xevion/leetcode.git
synced 2025-12-06 05:15:30 -06:00
sort-characters-by-frequency solution java
This commit is contained in:
31
sort-characters-by-frequency/Solution.java
Normal file
31
sort-characters-by-frequency/Solution.java
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
// Accepted
|
||||||
|
// Runtime: 10 ms
|
||||||
|
// Memory Usage: 40 MB
|
||||||
|
// Submitted: January 14th, 2021
|
||||||
|
|
||||||
|
class Solution {
|
||||||
|
public String frequencySort(String s) {
|
||||||
|
// Get each character's frequency
|
||||||
|
Map<Character, Integer> count = new HashMap<Character, Integer>();
|
||||||
|
for (char c : s.toCharArray())
|
||||||
|
count.put(c, count.getOrDefault(c, 0) + 1);
|
||||||
|
|
||||||
|
// Paired with the character, sort each frequency
|
||||||
|
PriorityQueue<Map.Entry<Character, Integer>> pq = new PriorityQueue<>((a, b) -> b.getValue() - a.getValue());
|
||||||
|
pq.addAll(count.entrySet());
|
||||||
|
|
||||||
|
// Building the final st
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
while (!pq.isEmpty()) {
|
||||||
|
Map.Entry entry = pq.poll();
|
||||||
|
char v = (char) entry.getKey();
|
||||||
|
int n = (int) entry.getValue();
|
||||||
|
|
||||||
|
// Place n many v chars in the StringBuilder
|
||||||
|
for (int i = 0; i < n; i++)
|
||||||
|
sb.append(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user