题解 | 移掉 K 位数字

移掉 K 位数字

https://www.nowcoder.com/practice/0fe685c8272d40f1b9785fedd2499c1c

注意事项

贪心算法:从左到右遍历数字,尽量移除较大的数字。栈:使用栈来存储当前的最小数字序列。

前导零:结果中不能有前导零。

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param num string字符串 
# @param k int整型 
# @return string字符串
#
class Solution:
    def removeKnums(self , num: str, k: int) -> str:
        # write code here
        s = []
        for x in num:
            while k and s and s[-1]>x:#尽可能的删除掉前面的大的数字
                s.pop()
                k -= 1
            s.append(x)
        s = s[:-k] if k else s#如果k位尚未全部移除,则需要在最后截取
        ans = ''.join(s).lstrip('0')#注意前导0字符的删除
        return ans if ans else 0#全部被删除或只剩前导0字符,则返回0

全部评论

相关推荐

03-08 18:11
门头沟学院 Java
Java抽象小篮子:海投就完事了,简历没什么问题,最大问题是学历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务