# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
# 88ms
class Solution(object):
def isPalindrome(self, head):
"""
:type head: ListNode
:rtype: bool
解题思路:首先想到 反转之后和原链表相等 即为true 不太可行 pass
解题思路2:遍历 把值一次放到列表里,reverse列表再比较 结果✅
"""
list1 = []
while head:
list1.append(head.val)
head = head.next
import copy
list2 = copy.copy(list1)
list1.reverse()
if list1 == list2:
return True
return False
# leetcode最优解 44ms 和我的思路一样 只是判断是否是回文列表的方法不一样
# 他是通过前后索引判断是否是回文 可以学习一下 应该也可以用在字符串回文
class Solution2(object):
def isPalindrome(self, head):
"""
:type head: ListNode
:rtype: bool
"""
if head is None:
return True
l = []
while head is not None:
l.append(head.val)
head = head.next
for i in range(len(l) // 2):
if l[i] != l[len(l) - 1 - i]:
return False
return True
网友评论