1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| class Solution: def middleNode(self, head): slow = head fast = head while fast and fast.next: slow = slow.next fast = fast.next.next return slow def reverseList(self, head): pre = None cur = head while cur: tmp = cur.next cur.next = pre pre = cur cur = tmp return pre
def isPalindrome(self, head: Optional[ListNode]) -> bool: if head is None: return True mid = self.middleNode(head) head2 = self.reverseList(mid) while head2: if head.val != head2.val: return False head = head.next head2 = head2.next return True
|