-
-
Notifications
You must be signed in to change notification settings - Fork 299
/
761.java
45 lines (40 loc) · 1.36 KB
/
761.java
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
__________________________________________________________________________________________________
sample 1 ms submission
class Solution {
public String makeLargestSpecial(String S) {
return visit(0, S);
}
public String visit(int index, String s) {
if (s.charAt(index) == '0') return "";
PriorityQueue<String> tokens = new PriorityQueue();
while(index < s.length() && s.charAt(index) == '1') {
String token = "1"+visit(index+1, s)+"0";
index+= token.length();
tokens.offer(token);
}
String result = "";
while (tokens.size() > 0) result = tokens.poll()+result;
return result;
}
}
__________________________________________________________________________________________________
sample 34572 kb submission
class Solution {
public String makeLargestSpecial(String S) {
int cnt = 0, i = 0;
ArrayList<String> v = new ArrayList<String>();
String res = "";
for (int j = 0; j < S.length(); ++j) {
cnt += (S.charAt(j) == '1') ? 1 : -1;
if (cnt == 0) {
v.add('1' + makeLargestSpecial(S.substring(i + 1, j)) + '0');
i = j + 1;
}
}
Collections.sort(v, (x, y) -> y.compareTo(x));
for (String str : v)
res += str;
return res;
}
}
__________________________________________________________________________________________________