给定一个链表,请判断该链表是否为回文结构。
回文是指该字符串正序逆序完全一致。
数据范围: 链表节点数 ,链表中每个节点的值满足
# 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: # write code here cur=head a=[] while cur: a.append(cur.val) cur=cur.next r=len(a)-1 l=0 while l<r: if a[l]!=a[r]: return False l+=1 r-=1 return True
class Solution: def isPail(self , head: ListNode) -> bool: # write code here def LenthList(head): # 计算链表长度 count = 0 while head: count += 1 head = head.next return count def ConList(head): # 逆转链表,方便对比 p = ListNode(0) while head: q = head head = q.next q.next = p.next p.next = q return p.next len = LenthList(head) front = p = ListNode(0) behind = ListNode(0) count = 0 while head: # 将链表一分为二,前半段和后半段 if len // 2 == count: behind.next = head break p.next = ListNode(head.val) head = head.next p = p.next count += 1 Conbehind = ConList(behind.next) front = front.next while front and Conbehind: # 对比两个链表,不相等则False if front.val != Conbehind.val: return False front = front.next Conbehind = Conbehind.next return True
# 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: # write code here if not head: return head pre = head nums = [] while pre is not None: val = pre.val pre = pre.next nums.append(val) if nums == nums[::-1]: return True return False
class Solution: def isPail(self , head: ListNode) -> bool: # write code here list1 = [] while head != None: list1.append(head.val) head = head.next print(list1) left = 0 right = len(list1)-1 while left < right: if list1[left] != list1[right]: return False left += 1 right -= 1 return True