mirror of
https://github.com/Xevion/leetcode.git
synced 2025-12-06 03:15:28 -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