题目:(与LeetCode不同的地方在于,LeetCode用的是链表,此处用的是列表)
给出两个非空的列表(链表)用来表示两个非负的整数。其中它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
实例:
输入:[2,4,3] + [5,6,4] 输出:7 -> 0 -> 8 原因:342 + 465 = 807
代码:
class Solution:
def addTwoNumbers(self,l1,l2):
if 'list' not in str(type(l1)):
l1=list(l1)
new_l1=[]
#对输入的列表进行头尾互调,并以新的列表存储起来
for i1 in range(len(l1)):
new_l1.append(l1[len(l1)-1-i1])
if 'list' not in str(type(l2)):
l2=list(l2)
new_l2=[]
#同上
for i2 in range(len(l2)):
new_l2.append(l2[len(l2)-1-i2])
all_new_list=list(zip(new_l1,new_l2))
str_1=all_new_list[0][0]
str_2=all_new_list[0][1]
for k in range(len(all_new_list)-1):
str_1=str(str_1)+str(all_new_list[k+1][0])
str_2=str(str_2)+str(all_new_list[k+1][1])
new_number=int(str_1)+int(str_2)
print(new_number)
return new_number
if __name__=='__main__':
S=Solution()
number=S.addTwoNumbers([1,2,3,4],[2,2,3,4])
for i in str(number):
print(i)