-
-
Notifications
You must be signed in to change notification settings - Fork 291
Expand file tree
/
Copy path451.java
More file actions
60 lines (47 loc) · 1.85 KB
/
451.java
File metadata and controls
60 lines (47 loc) · 1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
__________________________________________________________________________________________________
sample 2 ms submission
class Solution {
public String frequencySort(String s) {
char[] charArr = new char[128];
for(char c : s.toCharArray())
charArr[c]++;
StringBuilder sb = new StringBuilder();
while(sb.length() < s.length()) {
char maxChar = 0;
for(char charCur = 0; charCur < charArr.length; charCur++) {
if(charArr[charCur] > charArr[maxChar]) {
maxChar = charCur;
}
}
while(charArr[maxChar] > 0){
sb.append(maxChar);
charArr[maxChar]--;
}
}
return sb.toString();
}
}
__________________________________________________________________________________________________
sample 35756 kb submission
class Solution {
public String frequencySort(String s) {
HashMap<Character, Integer> map = new HashMap<>();
PriorityQueue<Character> maxHeap =
new PriorityQueue<>((c1, c2) -> map.get(c2) - map.get(c1));
StringBuilder sortedString = new StringBuilder();
for(char c : s.toCharArray()) {
map.put(c, map.getOrDefault(c, 0) + 1);
}
for(char key: map.keySet()) {
maxHeap.offer(key);
}
while (!maxHeap.isEmpty()) {
char key = maxHeap.poll();
for(int i = 0; i < map.get(key); i++) {
sortedString.append(key);
}
}
return sortedString.toString();
}
}
__________________________________________________________________________________________________