给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。
注意:
示例 1 :
输入: num = "1432219", k = 3 输出: "1219" 解释: 移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。
示例 2 :
输入: num = "10200", k = 1 输出: "200" 解释: 移掉首位的 1 剩下的数字为 200. 注意输出不能有任何前导零。
学了一个str.lstrip("0"),这样就可以去掉字符串左边的0啦~~~!于是0200— >200 ~~~
这道题用贪心( ⊙ o ⊙ )!
(前一个数字比后一个数字大,则删掉前面的数字)
分析:
mine:
# 贪心 # 前一个数字比后一个数字大,则删掉前面的数字 class Solution(object): def removeKdigits(self, num, k): """ :type num: str :type k: int :rtype: str """ # if k==len(num): return '0' stack = [] for i in num: while stack and k and i<stack[-1]: stack.pop() k -= 1 stack.append(i) # 12345,k=3的时候 while k: stack.pop() k-=1 if stack is None: return '0' # 处理 10200,k=1的时候 print(stack) print("".join(stack).lstrip('0')) # # ['0', '2', '0', '0'] # 200 return "".join(stack).lstrip('0') or "0"