题目
给定一个链表,请判断该链表是否为回文结构。
回文是指该字符串正序逆序完全一致。
数据范围: 链表节点数 0 \le n \le 10^50≤n≤105,链表中每个节点的值满足 |val| \le10^7∣val∣≤107
示例1
输入:{1}
返回值:true
示例2
输入:{2,1}
返回值:false
说明:2->1
解题思路
1.如果链表为空或只有一个结点,则必为回文结构
2.将链表结点的值依次放入列表中
3.从列表中间拆分,并在列表长度为偶数或奇数的前提下,判断链表是否为回文结构
题解
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param head ListNode类 the head
# @return bool布尔型
#
class Solution:
def isPail(self , head: ListNode) -> bool:
# 如果链表为空或只有一个结点,则必为回文结构
if head is None or head.next is None: return True
# 将链表结点的值依次放入列表中
p = head
l = []
while p:
l.append(p.val)
p = p.next
# 从列表中间拆分,判断链表是否为回文结构
n = int(len(l)/2) if len(l)%2==0 else int((len(l)-1)/2)
for i in range(n):
# 若列表长度为偶数
if len(l)%2==0:
if l[n-1-i] != l[n+i]: return False
# 若列表长度为奇数
else:
if l[n-i] != l[n+i]: return False
return True