39 lines
1023 B
Java
39 lines
1023 B
Java
/*
|
|
* @lc app=leetcode id=402 lang=java
|
|
*
|
|
* [402] Remove K Digits
|
|
*/
|
|
|
|
// @lc code=start
|
|
class Solution {
|
|
public String removeKdigits(String num, int k) {
|
|
ArrayDeque<Character> stack = new ArrayDeque<>();
|
|
for(int i = 0; i < num.length(); i++) {
|
|
if(k == 0) {
|
|
stack.addLast(num.charAt(i));
|
|
} else {
|
|
while(k>0 && !stack.isEmpty() && stack.peekLast() > num.charAt(i)) {
|
|
k--;
|
|
stack.removeLast();
|
|
}
|
|
stack.addLast(num.charAt(i));
|
|
}
|
|
}
|
|
while(!stack.isEmpty() && k > 0) {
|
|
k--;
|
|
stack.removeLast();
|
|
}
|
|
// 消除开头的0
|
|
while(!stack.isEmpty() && stack.getFirst()=='0') {
|
|
stack.removeFirst();
|
|
}
|
|
StringBuilder sb = new StringBuilder();
|
|
for(Character c : stack) {
|
|
sb.append(c);
|
|
}
|
|
return sb.isEmpty()?"0":sb.toString();
|
|
}
|
|
}
|
|
// @lc code=end
|
|
|