402. 移掉 K 位数字
题目描述
给你一个以字符串表示的非负整数 num
和一个整数 k
移除这个数中的 k
位数字,
使得剩下的数字最小
请你以字符串形式返回这个最小的数字。
示例 1 :
输入:num = "1432219", k = 3
输出:"1219"
解释:移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219 。
示例 2 :
输入:num = "10200", k = 1
输出:"200"
解释:移掉首位的 1 剩下的数字为 200. 注意输出不能有任何前导零。
示例 3 :
输入:num = "10", k = 2
输出:"0"
解释:从原数字移除所有的数字,剩余为空就是 0 。
提示:
● 1
题目解析
- 移除
k
个数字之后,使剩下的数字最小 - 那么每移除一个数字的话可以对
k
进行减一操作 - 以
num = "1432219", k = 3
为例,记结果集为ans
- 遍历到数字
1 --> ans = 1
- 遍历到数字
4 --> ans = 14
- 遍历到数字
3
小于4
那么移除4 --> ans = 13;k--;k = 2
- 遍历到数字
2
小于3
那么移除3 --> ans = 12;k--;k = 1
- 遍历到数字
2
等于2 --> ans = 122;k = 1
- 遍历到数字
1
小于2 --> ans = 121;k = 0
k = 0;ans = 1219
show code
class Solution {
public String removeKdigits(String num, in服务器托管网t k) {
// 创建一个栈,用于存储遍历字符串
StringBuilder builder = new StringBuilder();
int n = num.length();
for(int i = 0;i 0 && builder.charAt(builder.length() - 1) > at && k > 0) {
builder.deleteCharAt(builder.length() - 1);
k--;
服务器托管网 }
builder.append(at);
}
// 这里如果没有移除够 k 个数,继续移除
for (int i = 0; i
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
FIFO队列文档 先入先出环形缓冲区(First In First Out, FIFO)是一种循环缓冲区结构。它利用一个定长数组来循环存储数据,通过头指针和尾指针来表示队头和队尾,实现先入先出的缓冲机制。与普通先入先出队列相比,先入先出环形缓冲区通过循环利用数…