题解 | #判断一个链表是否为回文结构#

判断一个链表是否为回文结构

http://www.nowcoder.com/practice/3fed228444e740c8be66232ce8b87c2f

思路

  1. 得到反向的链表
  2. 依次比较两链表结点值是否相同,有不相同则返回false;直到最后都没有不相同则返回true

注意

得到反向链表而不是将原链表反向,需要copy一份出来

public class Solution {
    public boolean isPail (ListNode head) {
        if(head==null) return true;
        ListNode rev=reverseList(copyList(head));
        while(head!=null){
            if(head.val!=rev.val) return false;
            head=head.next;
            rev=rev.next;
        }
        return true;
    }
    //反转链表
    public static ListNode reverseList(ListNode head){
        if(head==null) return head;
        ListNode las=null;
        ListNode nex=head.next;
        head.next=las;
        while(nex!=null){
            las=head;
            head=nex;
            nex=head.next;
            head.next=las;
        }
        return head;
    }
    //拷贝链表
    public static ListNode copyList(ListNode head){
        if(head==null) return head;
        ListNode res=new ListNode(head.val);
        head=head.next;
        ListNode now=res;
        while(head!=null){
            now.next=new ListNode(head.val);
            head=head.next;
            now=now.next;
        }
        return res;
    }
}
全部评论

相关推荐

把球:这个听过,你加了就会发现是字节的hr
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务