1 题目
给你一个以字符串表示的非负整数 num 和一个整数 k ,移除这个数中的 k 位数字,使得剩下的数字最小。请你以字符串形式返回这个最小的数字。
2 解析
(1)从左开始遍历num
(2)如果当前值都大于左边和右边的元素,就删除当前元素
(3)如果当前元素小于左边元素,就删除左边元素。
(4)用栈来记录左边的元素
3 Python实现
class Solution:
def removeKdigits(self, num: str, k: int) -> str:
stack = []
remain = len(num) - k
# 如果提出的长度和字符串长度一样,一定返回是0
if len(num)==k:
return '0'
for n in num:
# 栈顶元素大,就删除栈顶,直到k为0
while k and stack and n <stack[-1]:
stack.pop()
k-=1
stack.append(n)
return str(int(''.join([str(v) for v in stack])[:remain]))