From b7efb648858613c6dbea7b07733a346a4e0d13b7 Mon Sep 17 00:00:00 2001 From: Xevion Date: Thu, 14 Jan 2021 19:35:53 -0600 Subject: [PATCH] sort-characters-by-frequency solution java --- sort-characters-by-frequency/Solution.java | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 sort-characters-by-frequency/Solution.java diff --git a/sort-characters-by-frequency/Solution.java b/sort-characters-by-frequency/Solution.java new file mode 100644 index 0000000..422e6fd --- /dev/null +++ b/sort-characters-by-frequency/Solution.java @@ -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 count = new HashMap(); + for (char c : s.toCharArray()) + count.put(c, count.getOrDefault(c, 0) + 1); + + // Paired with the character, sort each frequency + PriorityQueue> 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(); + } +} \ No newline at end of file