LeetCode 402. 移掉 K 位数字
文章目录
题目描述
LeetCode 402. 移掉 K 位数字
提示:
1 <= k <= num.length <= 105
num 仅由若干位数字(0 - 9)组成
除了 0 本身之外,num 不含任何前导零
一、解题关键词
二、解题报告
1.思路分析
2.时间复杂度
3.代码示例
class Solution {
public String removeKdigits(String num, int k) {
Deque<Character> deque = new LinkedList<>();
int len = num.length();
for(int i = 0; i < len;i++){
char digit = num.charAt(i);
while(!deque.isEmpty() && k > 0 && deque.peekLast() > digit){
deque.pollLast();
k--;
}
deque.offerLast(digit);
}
for(int i = 0; i < k;i++){
deque.pollLast();
}
StringBuilder ret = new StringBuilder();
boolean leadingZero = true;
while(!deque.isEmpty()){
char digit = deque.pollFirst();
if(leadingZero && digit == '0'){
continue;
}
leadingZero = false;
ret.append(digit);
}
return ret.length() == 0 ? "0" : ret.toString();
}
}
2.知识点
总结
相同题目
xxx