您的位置:首页 > 编程语言 > Java开发

[leetcode]Palindrome Linked List

2015-10-10 19:45 609 查看
public class Solution {

    public boolean isPalindrome(ListNode head) {

        if(head==null||head.next==null)

            return true;

        int n=0;

        ListNode t=head;

        while(t!=null){

            n++;

            t=t.next;

        }

        t=head;

        for(int i=0;i<(n+1)/2;i++){

            t=t.next;

        }

        ListNode second=reverseList(t);

        t=head;

        while(t!=null&&second!=null){

            if(t.val!=second.val)

                return false;

            t=t.next;

            second=second.next;

        }

        return true;

    }

    public ListNode reverseList(ListNode head){

        if(head==null||head.next==null)

          return head;

        ListNode prev=head,cur=head.next,next;

        prev.next=null;

        while(cur!=null){

            next=cur.next;

            cur.next=prev;

            prev=cur;

            cur=next;

        }

        return prev;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java leetcode