回文链表

题目来源:

牛客网--程序员面试金典

题目描述

请编写一个函数,检查链表是否为回文。
给定一个链表ListNode* **pHead,请返回一个bool,代表链表是否为回文。

思路

1.先用头插法,生成一个新的链表
2.然后将新生成的链表和原链表进行比对

代码

import java.util.*;

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Palindrome {
    ListNode head;
    ListNode last;
    public boolean isPalindrome(ListNode pHead) {
        // write code here
        ListNode current = pHead;
        
        current = pHead;
        while(current != null){
            insert(current.val);
            current = current.next;
        }
        current = pHead;
        while(current!=null&&head!=null){
            if(current.val != head.val){
                 return false;
                
            }else{
                current = current.next;
                head = head.next;
            }
                 
        }
        return true;
        
    }
//使用头插法的方式生成一个新的链表
     public void insert(int val){  
        ListNode node = new ListNode(val);
        if(head == null){
            head = node;
            last = node;
        }else{
            node.next = head;
            head = node;
        }
    }
}

你可能感兴趣的:(回文链表)