题目:给定两个非负整数的链表。数字以相反的顺序存储,每个节点包含一个数字。将这两个数字相加,并作为链表返回
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) Output: 7 -> 0 -> 8 Expl
ion: 342 + 465 = 807.
思路:先将两个链表均表示为数字,数字进行相加,再将数字转换为链表输出
直接将链表转置 需要反转 转换为str字符串格式。
中间遇到几个问题,其中一个数为0 时,无需转置。
将字符串进行反转
num1 = list(num1)
num1.reverse()
num1 = "".join(num1)
将两个链表转换为字符串并且进行数字计算。
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
num1 = ''
num2 = ''
while l1:
num1 += str(l1.val)
l1 = l1.next
num1 = list(num1)
num1.reverse()
num1 = "".join(num1)
while l2:
num2 += str(l2.val)
l2 = l2.next
num2 = list(num2)
num2.reverse()
num2 = "".join(num2)
num = str(int(num1) + int(num2))
if int(num1)==0:
head = ListNode(num[len(num2)-1])
a =head
for i in range(1,len(num2)):
node = ListNode(num2[len(num2)-i-1])
head.next =node
head = head.next
return a
if int(num2)==0:
head = ListNode(num[len(num1)-1])
a =head
for i in range(1,len(num1)):
node = ListNode(num1[len(num1)-i-1])
head.next =node
head = head.next
return a
head = ListNode(num[len(num)-1])
a =head
for i in range(1,len(num)):
node = ListNode(num[len(num)-i-1])
head.next =node
head = head.next
return a