Leetcode 738. Monotone Increasing Digits

高位到低位扫一遍,第一个降的就是要改的,如果要改的前面有几个一样的数,就改最前面那个.

class Solution(object):
    def monotoneIncreasingDigits(self, N):
        """
        :type N: int
        :rtype: int
        """
        s=str(N)
        size=len(s)
        k=-1
        
        for i in range(size-1):
            if s[i]>s[i+1]:
                k=i
                break
        if k==-1:
            return N
        
        for j in range(k-1,-2,-1):
            if j==-1:
                k=0
                break
            if s[j]!=s[k]:
                k=j+1
                break
        s=s[:k]+str(int(s[k])-1)+'9'*(size-1-k)
                
        if s[0]==0:
            s=s[1:]
            
        return int(s)

 

posted @ 2019-03-14 07:34  周洋  阅读(286)  评论(0编辑  收藏  举报