234. 回文链表
转换成数组,直接比
class Solution:
def isPalindrome(self, head: ListNode) -> bool:
shun = []
while head:
shun.append(head.val)
head = head.next
ni = shun[::-1]
for i in range(len(shun)):
if shun[i] != ni[i]:
return False
迭代
学习官方解法:
先找到最后的一位,开始逐个比较,如果有一位不相等返回False,上一层not False = True 也会直接返回False,直到结束
class Solution:
def isPalindrome(self, head: ListNode) -> bool:
self.front_pointer = head
def recursively_check(current_node):
if current_node is not None:
if not recursively_check(current_node.next):
return False
if self.front_pointer.val != current_node.val:
return False
self.front_pointer = self.front_pointer.next
return True
return recursively_check(head)