"""
输入数字n, 按顺序打印从1最大的n位十进制数
比如输入3, 则打印出1、2、3、到最大的3位数即999
"""
class Solution:
def Print1ToMaxOfNDigits(self, n):
if n <= 0:
return
number = ['0'] * n
while not self.Increment(number):
self.PrintNumber(number)
def Increment(self, number):
isOverflow = False
nTakeOver = 0
nLength = len(number)
for i in range(nLength-1, -1, -1):
nSum = int(number[i]) + nTakeOver
if i == nLength - 1:
nSum += 1
if nSum >= 10:
if i== 0:
isOverflow = True
else:
nSum -= 10
nTakeOver = 1
number[i] = str(nSum)
else:
number[i] = str(nSum)
break
return isOverflow
def PrintNumber(self, number):
isBeginning0 = True
nLength = len(number)
for i in range(nLength):
if isBeginning0 and number[i] != '0':
isBeginning0 = False
if not isBeginning0:
print('%c' % number[i], end='')
print('')
def Print1ToMaxOfNDigits2(self, n):
if n <= 0:
return
number = ['0'] * n
for i in range(10):
number[0] = str(i)
self.Print1ToMaxOfDigitsRecursively(number, n, 0)
def Print1ToMaxOfDigitsRecursively(self, number, lenth, index):
if index == lenth - 1:
self.PrintNumber(number)
return
for i in range(10):
number[index + 1] = str(i)
self.Print1ToMaxOfDigitsRecursively(number, lenth, index+1)
剑指offer python版 17.打印从1到最大的n位数
最新推荐文章于 2023-09-20 16:40:59 发布