判断回文链表

简介: 判断回文链表

今天为大家带来一个题目,在学习String的时候,就已经做过一个回文字符串的题目,现在再做一个链表回文的题目


思路分三步


1.找中间节点


2.翻转中间结点以后的结点


3.一个结点从前往后,一个结点从后往前,直到相遇


当结点个数为偶数结点的时候,head.next=slow时就是一个回文字符串,其他地方都是一样的


public class PalindromeList {
    public boolean chkPalindrome(ListNode A) {
        // write code here
            if(A==null){
                return false;
            }
            if(A.next==null){
                return true;
            }
            ListNode fast=A;
            ListNode slow=A;
            while(fast!=null&&fast.next!=null){
                    fast=fast.next.next;
                    slow=slow.next;
            }
            ListNode cur=slow.next;
            while(cur!=null){
                ListNode curNext=cur.next;
                cur.next=slow;
                slow=cur;
                cur=curNext;
            }
            while(A!=slow){
                if(A.val!=slow.val){
                    return false;
                }
                if(A.next==slow){
                    return true;
                }
                A=A.next;
                slow=slow.next;
            }
            return true;
    }
}

74dd19b3dac74f61b78b19e7c5ba214d.png

这个题目就讲解到这,我们下期再见!!!

相关文章
LeetCode | 234. 回文链表
LeetCode | 234. 回文链表
|
5天前
|
算法
链表的回文结构
链表的回文结构
|
5天前
|
Java Go C++
Golang每日一练(leetDay0086) 回文链表、删除链表节点
Golang每日一练(leetDay0086) 回文链表、删除链表节点
23 0
Golang每日一练(leetDay0086) 回文链表、删除链表节点
|
5天前
|
Python Java Go
Python每日一练(20230428) 最长有效括号、矩阵最长递增路径、回文链表
Python每日一练(20230428) 最长有效括号、矩阵最长递增路径、回文链表
34 0
Python每日一练(20230428) 最长有效括号、矩阵最长递增路径、回文链表
|
5天前
|
C++ Python Java
Python每日一练(20230424) 滑动窗口最大值、栈实现队列、直线上最多的点数
Python每日一练(20230424) 滑动窗口最大值、栈实现队列、直线上最多的点数
549 0
Python每日一练(20230424) 滑动窗口最大值、栈实现队列、直线上最多的点数
|
5天前
每日一题——回文链表
每日一题——回文链表
|
5天前
牛客网:OR36 链表的回文结构
牛客网:OR36 链表的回文结构
13 0
牛客网:OR36 链表的回文结构
|
5天前
|
算法
算法题解-回文链表
算法题解-回文链表
|
5天前
|
算法 Java C++
数据结构与算法面试题:实现一个函数,判断一个链表是否为回文链表。(提示:反转后半部分链表比对前半部分)
数据结构与算法面试题:实现一个函数,判断一个链表是否为回文链表。(提示:反转后半部分链表比对前半部分)
23 0
|
5天前
|
Go
golang力扣leetcode 234.回文链表
golang力扣leetcode 234.回文链表
11 0