234. Palindrome Linked List

Easy (Dễ) Python 🔗 Xem trên LeetCode

📋 Đề Bài

Given the head of a singly linked list, return true if it is a palindrome or false otherwise.

 

Example 1:

Input: head = [1,2,2,1]
Output: true

Example 2:

Input: head = [1,2]
Output: false

 

Constraints:

  • The number of nodes in the list is in the range [1, 105].
  • 0 <= Node.val <= 9

 

Follow up: Could you do it in O(n) time and O(1) space?

🧠 Thuật Toán & Kỹ Thuật

Linked List (Danh sách liên kết)String (Chuỗi)
⏱️ Thời gian O(n)
💾 Không gian O(n)

💻 Lời Giải

Python 0234-palindrome-linked-list.py
# 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:
        currNode = head
        string = ""
        
        while currNode:
            string += str(currNode.val)
            currNode = currNode.next
            
        return string == string[::-1]