单调栈
class Solution:
def removeKdigits(self, num: str, k: int) -> str:
stack = []
remove_num = 0
for i in range(len(num)):
while stack and num[i] < stack[-1] and k > remove_num:
stack.pop()
remove_num = remove_num + 1
stack.append(num[i])
if k > remove_num:
stack = stack[:len(stack)+remove_num-k]
while stack and stack[0] == '0':
stack = stack[1:]
if not stack:
return '0'
else:
return ''.join(stack)