题目链接
英文链接:https://leetcode.com/problems/remove-k-digits/
中文链接:https://leetcode-cn.com/problems/remove-k-digits/
题目详述
给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。
注意:
- num 的长度小于 10002 且 ≥ k。
- num 不会包含任何前导零。
示例 1 :
1 | 输入: num = "1432219", k = 3 |
示例 2 :
1 | 输入: num = "10200", k = 1 |
示例 3 :
1 | 输入: num = "10", k = 2 |
题目详解
贪心。
- 遍历字符串,每当当前字符大于他的下一个字符时,需要删除当前字符。
- 可以实现一个单调栈(栈底到栈顶从小到大,不严格单调,可以相等)。
- 注意长度为字符串原始长度减去 k。
- 若有前导0,需要去掉(相应最终长度也会减小)。
1 | public class LeetCode_00402 { |