2 回答
TA贡献1842条经验 获得超12个赞
当我处理数字问题时,我喜欢将数字提取与我最终对数字所做的任何事情分离。
def digits(n):
# requires n >= 0, counts 0 as having no digits
while n:
yield n%10
n //= 10
head = cur = ListNode(0) # not part of the final list
for x in digits(number):
cur.next = ListNode(x)
cur = cur.next
head = head.next
当您迭代数字时,您需要处理第一个 ListNode(如果存在)的创建与其他 ListNode 略有不同,因为它没有父级。我通过创建一个假的起点来回避这一点,以便可以统一处理所有数字,然后忽略额外的对象。无论如何,你都是在一个函数中做这一切,所以垃圾收集器可以处理它。
TA贡献1862条经验 获得超7个赞
这是一个基于字符串反转的解决方案:
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
def form_linked_list(number):
number_str = str(number)[::-1]
if number_str:
head = ListNode(number_str[0])
for idx in range(1,len(number_str)):
if idx == 1:
head.next = ListNode(int(number_str[idx]))
temp = head.next
else:
temp.next = ListNode(int(number_str[idx]))
temp = temp.next
return head
if __name__ == '__main__':
result =form_linked_list(523)
while(result):
print(result.val)
result = result.next
输出是:
1
3
2
添加回答
举报