Leetcode每日一题
题目链接: 738. 单调递增的数字
难度: 中等
解题思路: 从地位到高位进行模拟,若当前位的值小于高位的指,那么当前位就要向高位借位,并且当前位的指赋值为9。考虑到有0出现,所以在最后还需要进行一次处理,若当前位为
题解:
class Solution:
def monotoneIncreasingDigits(self, N: int) -> int:
digit = [int(d) for d in str(N)]
flag = False # 借位
for i in reversed(range(1, len(digit))):
if flag:
digit[i + 1] = 9
if (digit[i]) < (digit[i - 1]):
digit[i] = 9
digit[i - 1] -= 1
flag = True
else:
flag = False
res = str()
# 去除前导0
if digit[0] != 0:
res += str(digit[0])
# 若某一个出现9那么后面全是9
for i in range(1, len(digit)):
if digit[i - 1] == 9:
digit[i] = 9
res += "9"
else:
res += str(digit[i])
return res