zoukankan      html  css  js  c++  java
  • 链表回文

    如何判断一个单链表是否为回文

    链接:https://www.nowcoder.com/questionTerminal/baefd05def524a92bcfa6e1f113ed4f0
    来源:牛客网

    请编写一个函数,检查链表是否为回文。

    给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。

    测试样例:
    {1,2,3,2,1}
    返回:true
    {1,2,3,2,3}
    返回:false
    思路:先找到中间节点,然后将后面倒置,再两个链表比对
    # -*- coding:utf-8 -*-
    class ListNode:
         def __init__(self, x):
             self.val = x
             self.next = None
    
    def isPalindrome(pHead):
        if not pHead:
            return False
        mid=findMidNode(pHead)
        s=LinkReverse(mid)
        p=pHead
        while s and p:
            if s.val!=p.val:
                return False
            p=p.next
            s=s.next
        return True
    
    def findMidNode(pHead):
        p=pHead
        q=pHead.next
        while q:
            #if q.next and (not q.next.next):
                #
            if not q.next:
                break
            p=p.next
            if q.next:
                try:
                    q=q.next.next
                except:
                    q=q.next
        return p
    def LinkReverse(pHead):
        q=pHead.next
        pHead.next=None
        while q:
            s=q
            q=q.next
            s.next=pHead.next
            pHead.next=s
        return s
    pHead=ListNode(1)
    node2=ListNode(2)
    node3=ListNode(3)
    node4=ListNode(2)
    node5=ListNode(1)
    pHead.next=node2
    node2.next=node3
    node3.next=node4
    node4.next=node5
    print isPalindrome(pHead)
  • 相关阅读:
    Flask路由+视图补充
    Flask登录认证
    Flask
    初识Flask
    redis 注意事项
    Linux安装python和更新pip
    Django 导入配置文件
    redis 5种类型
    redis 支持事务
    数组乱序与数组拆解
  • 原文地址:https://www.cnblogs.com/BetterThanEver_Victor/p/7454148.html
Copyright © 2011-2022 走看看