打印从1到最大的n

Posted shadow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了打印从1到最大的n相关的知识,希望对你有一定的参考价值。

题目:输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数999

需考虑大数问题

#-*-coding:utf-8-*-

class print_N:
    def __init__(self,n):
         assert n >= 1, Input error:n must >= 1
         self.data = [0] * n
         self.print_number()
         
    def print_number(self):
       
        while self.Increment():
            i = 0
            while self.data[i] == 0:
                i += 1
            print ‘‘.join(self.data[i:])
    
    def Increment(self):
        
        length = len(self.data)
        index = length - 1
        digit = int(self.data[index])
        digit += 1
        if digit == 10:  # 满10进1
            flag = True
            while flag and index > 0:
                self.data[index] = 0
                index -= 1
                tmp = int(self.data[index]) + 1
                if tmp < 10:
                    flag = False
                    self.data[index] = str(tmp)
            if flag and index == 0:  # 当到达第一个位置时,如果符合满十进一的条件,则结束循环
                return False
        else:
            self.data[index] = str(digit)
        
        return True
if __name__ == __main__:
    p = print_N(0)
    p = print_N(2)
    p = print_N(5) 
    
     
    
        
 
        
        

 

以上是关于打印从1到最大的n的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode | 面试题17. 打印从1到最大的n位数剑指OfferPython

LeetCode——剑指offer17打印从1到最大的n位数

LeetCode剑指 Offer 17. 打印从1到最大的n位数(C++)

LeetCode-字符串打印从1到最大的n位数

剑指 Offer 17. 打印从1到最大的n位数

每日一练:打印从1到最大的n位数