leetcode——402. 移掉K位数字

class Solution(object):
    def removeKdigits(self, num, k):
        """
        :type num: str
        :type k: int
        :rtype: str
        """
        if k>=len(num):
            return '0'
        i=0
        j=1
        while k and j<len(num):
            while num[0]=='0':
                num=num[1:]
            if num[j]>num[i]:
                #if j==len(num)-1:
                    #num=num[:j]
                while j<len(num)-1 and num[j+1]>=num[j]:
                    j+=1
                num=num[:j]+num[j+1:]
                k-=1
            elif num[j]<num[i]:
                num = num[:i]+num[i + 1:]
                k-=1
            else:
                while j<len(num) and num[i]==num[j] :
                    i+=1
                    j+=1
                if k and j==len(num):
                    while k:
                        num=num[:-1]
                        k-=1
                    return num
                elif num[j] > num[i]:
                    while j < len(num) - 1 and num[j + 1] >= num[j]:
                        j += 1
                    num = num[:j] + num[j + 1:]
                    k -= 1
                elif num[j] < num[i]:
                    num = num[:i]+num[i + 1:]
                    k -= 1
            i,j=0,1
        while num[0]=='0' and num!='0':
            num=num[1:]
        return num
执行用时 :44 ms, 在所有 python 提交中击败了65.29%的用户
内存消耗 :12.1 MB, 在所有 python 提交中击败了12.20%的用户
 
这个是自己做的。。
但是没有用到栈,,所以做法应该需要改进。
 
——2019.11.5

猜你喜欢

转载自www.cnblogs.com/taoyuxin/p/11796692.html