Участник:Danillich/MonotoneIncreasingDigits

Материал из DISCOPAL
Перейти к: навигация, поиск
class Solution:
    def monotoneIncreasingDigits(self, N: int) -> int:
        if N < 10:
            return N
        else:
            s = str(N)
            k = len(s) - 2
            l = k
            t = -1
 
            while l >= 0:
                if s[l] > s[l+1]:
                    t = l
                if (s[l] == s[l+1]) and (t == l+1):
                    t = l
                l -= 1
            i = int((N // 10**(k - t + 1)) % 10)
 
            if t == 0 and s[0] != '1':
                return str(i - 1) + ('9'*(k - t + 1))
            elif t == 0 and s[0] == '1':
                return '9'*(k - t + 1)
            elif t == -1:
                return N
            else:
                return s[:t] + str(i - 1) + ('9'*(k - t + 1))