前言
栈的题目做多了,还是会碰到很多自己没意料的思路和想法,可能还是一开始思考不够,需要多加联系
题目
思路
字丑就见谅了,自己学习看看哈哈哈
源码
class Solution:
def removeKdigits(self, num: str, k: int) -> str:
stack=[]
for c in num:
#当k>0 ,堆栈不为空,当前数字大于左侧,弹出堆栈即删除这位
while k and stack and stack[-1]>c:
stack.pop()
k -= 1
# 否则将该数入栈
stack.append(c)
# 当上述循环未i删除干净时,去除数字的尾部
ans=stack[:-k] if k else stack
# 清楚前导0或者返回0
return "".join(ans).lstrip('0') or '0'