📅  最后修改于: 2023-12-03 14:55:44.792000             🧑  作者: Mango
本文介绍了如何编写一个函数来检查一个单向链表是否为回文。回文是指正着读和倒着读都一样的字符串或序列。在链表中,我们需要检查链表的节点值是否以正序和逆序相同的方式排列。
我们可以通过将链表的值复制到一个数组中,然后利用数组的特性来判断是否为回文。具体步骤如下:
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def isPalindrome(head):
# 将链表的值复制到数组中
values = []
curr = head
while curr:
values.append(curr.val)
curr = curr.next
# 使用双指针法判断是否为回文
left, right = 0, len(values) - 1
while left < right:
if values[left] != values[right]:
return False
left += 1
right -= 1
return True
本文介绍了检查单向链表是否为回文的函数,并给出了具体的思路和代码实现。此方法利用数组来简化回文的判断,通过双指针法来比较数组中对称位置的值。这是一个简单有效的方法,但需要额外的O(n)空间来存储链表的值。如果没有空间复杂度的限制,这个方法是可行的。