javaleetcode234. 回文链表

Posted 青春无敌美少

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaleetcode234. 回文链表相关的知识,希望对你有一定的参考价值。

leetcode234. 回文链表:

问题描述


解题思路:

先通过双指针中的快慢指针来找到链表的中点
如果fast指针没有指向null,说明链表长度为奇数,slow还要再前进一步
从slow开始反转后面的链表,现在开始比较回文串


实现代码:

class Solution 
    public boolean isPalindrome(ListNode head) 
        ListNode slow,fast;
        slow=fast=head;
        while(fast!=null&&fast.next!=null)
            slow=slow.next;
            fast=fast.next.next;
        
        if(fast!=null)
            slow=slow.next;
        
        ListNode left=head;
        ListNode right=reverse(slow);
        while(right!=null)
            if(left.val!=right.val)
                return false;
            
            left=left.next;
            right=right.next;
        
        return true;
    
    public ListNode reverse(ListNode head)
        ListNode pre=null;
        ListNode cur=head;
        while(cur!=null)
            ListNode next=cur.next;
            cur.next=pre;
            pre=cur;
            cur=next;
        
        return pre;
    


以上是关于javaleetcode234. 回文链表的主要内容,如果未能解决你的问题,请参考以下文章

234. 回文链表

Leetcode链表回文链表(234)

234. 回文链表

leetcode 234 回文链表

234. 回文链表

LeetCode 234. 回文链表