题目:
编写一个函数,检查输入的链表是否是回文的。
示例 1:
输入: 1->2
输出: false
示例 2:
输入: 1->2->2->1
输出: true
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def isPalindrome(self, head: ListNode) -> bool:
judge = []
while head:
judge.append(head.val)
head = head.next
return judge == judge[::-1]
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def isPalindrome(self, head: ListNode) -> bool:
i ,length= head, 0
if not head:
return 1 == 1
while i:
length += 1
i = i.next
stack = []
r = head
k = length//2
if length % 2 != 0:
k+=1
for x in range (k):
stack.append(r.val)
r = r.next
if length % 2 != 0 and x == length//2:
stack.pop()
for j in reversed(stack):
if j == r.val:
stack.pop()
r = r.next
return len(stack) == 0