1
class Solution {
2
public String removeKdigits(String num, int k) {
3
int n = num.length();
4
if (n == k) {
5
return "0";
6
}
7
Deque<Character> dq = new ArrayDeque<>();
8
for (char ch : num.toCharArray()) {
9
while (!dq.isEmpty() && k > 0 && dq.peekLast() > ch) {
10
dq.pollLast();
11
k--;
12
}
13
dq.addLast(ch);
14
}
15
StringBuilder sb = new StringBuilder();
16
while (!dq.isEmpty() && dq.peekFirst() == '0') {
17
dq.pollFirst();
18
}
19
while (!dq.isEmpty()) {
20
sb.append(dq.pollFirst());
21
}
22
if (k >= sb.length()) {
23
return "0";
24
}
25
return sb.length() == 0 ? "0" : sb.toString().substring(0, sb.length() - k);
26
}
27
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0