402-removeKdigits

'''
使用一个栈作为辅助,遍历数字字符串,当当前的字符比栈最后的字符小的时候,说明要把栈的最后的这个字符删除掉。为什么呢?你想,把栈最后的字符删除掉,然后用现在的字符进行替换,是不是数字比以前的那种情况更小了?所以同样的道理,做一个while循环!这个很重要,可是我没有想到。在每一个数字处理的时候,都要做一个循环,使得栈里面最后的数字比当前数字大的都弹出去。

最后,如果K还没用完,那要删除哪里的字符呢?毋庸置疑肯定是最后的字符,因为前面的字符都是小字符。
---------------------
作者:负雪明烛
来源:CSDN
原文:https://blog.csdn.net/fuxuemingzhu/article/details/81034522
版权声明:本文为博主原创文章,转载请附上博文链接!
'''
class Solution:
    #使用栈
    def removeKdigits(self, num, k):
        res = []

        for ch in num:
            while res and k > 0 and ch < res[-1]:
                res.pop()
                k -= 1
            res.append(ch)

        while k:
            res.pop()
            k -= 1

        #去掉前导0
        while res and res[0] == '0':
            res.remove(res[0])

        if not res:
            return '0'
        else:
            return ''.join(res) #join函数的使用
        #return res if res else '0'
s = Solution()
print(s.removeKdigits('112', 1))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值