
- 用字符串模拟长整数
- 用list来改变字符串,需要注意的是list里面的元素需要时字符类型的数据
- 使用join()方法将list转变为string,使用list好处就是想要改变元素的值,作为函数参数的时候,list的值是可以改变的
- 注意ord()函数和chr()函数的使用方法
- num = ord(number[i]) - ord(‘0’) + carry 字符不能直接相减,需要使用ord进行转换
- number[i] = chr(ord(‘0’) + num) #chr将数组转化为ascii 字符不能直接相加,需要使用ord和chr进行转换
class Solution:
def Increment(self, number):
overFlow = carry = 0
length = len(number)
for i in range(length - 1, -1, -1):
num = ord(number[i]) - ord('0') + carry
if i == length - 1:
num += 1
if num >= 10:
if i == 0:
overFlow = 1
else:
num -= 10
carry = 1
else:
carry = 0
number[i] = chr(ord('0') + num)
return overFlow
def PrintNum(self, number):
string = ''.join(number)
for i in range(len(string)):
if string[i] != '0':
print(string[i:])
break
def print1ToMaxOfNDigits(self, n):
if n <= 0:
raise Exception('Input Error : n!')
number = ['0'] * n
while not self.Increment(number):
self.PrintNum(number)
Solution().print1ToMaxOfNDigits(3)