###### tags: `LeetCode`,`Python`,`Easy` # 234. Palindrome Linked List ### **題目連結:** [**Palindrome Linked List**](https://leetcode.com/problems/palindrome-linked-list/description/?envType=daily-question&envId=2024-03-22) ### **解題方向** * 用快慢指針找到中間點 * 反轉後半list * 對比前半與反轉後的後半 ### **完整程式碼** ```Python3= # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def isPalindrome(self, head: Optional[ListNode]) -> bool: if not head or not head.next: return True slow = head fast = head while fast and fast.next: fast = fast.next.next slow = slow.next reverse_head = self.reverse(slow) temp1 = head temp2 = reverse_head while temp2: if temp1.val != temp2.val: return False temp1 = temp1.next temp2 = temp2.next return True def reverse(self, head): if not head: return None prev = None curr = head while curr: next_node = curr.next curr.next = prev prev = curr curr = next_node return prev ```