1
class Solution {
2
public String frequencySort(String s) {
3
int len = s.length();
4
HashMap<Integer, HashSet<Character>> map = new HashMap();
5
HashMap<Character, Integer> freqMap = new HashMap();
6

7
for (int idx = 0; idx < len; idx++) {
8
char ch = s.charAt(idx);
9
freqMap.put(ch, freqMap.getOrDefault(ch, 0) + 1);
10
}
11

12
int maxFreq = 0, minFreq = s.length();
13

14
for (char ch : freqMap.keySet()) {
15
HashSet<Character> set = map.getOrDefault(freqMap.get(ch), new HashSet());
16
set.add(ch);
17
map.put(freqMap.get(ch), set);
18
maxFreq = Math.max(maxFreq, freqMap.get(ch));
19
minFreq = Math.min(minFreq, freqMap.get(ch));
20
}
21

22
StringBuilder ansStr = new StringBuilder();
23

24
for (int freq = maxFreq; freq >= minFreq; freq--) {
25
if (map.containsKey(freq)) {
26
HashSet<Character> set = map.get(freq);
27
for (char ch : set) {
28
int temp = freq;
29
while (temp > 0) {
30
ansStr.append(ch);
31
temp--;
32
}
33
}
34
}
35
}
36

37
return ansStr.toString();
38
}
39
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0