回文链表 请编写一个函数,检查链表是否为回文。 给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。 测试样例: {1,2,3,2,1} 返回:true {1,2,3,

来源:互联网 发布:淘宝化妆品店铺推荐 编辑:程序博客网 时间:2024/05/16 04:57

请编写一个函数,检查链表是否为回文。

给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。

测试样例:
{1,2,3,2,1}
返回:true
{1,2,3,2,3}
返回:false





/*
public class ListNode {
    int val;
    ListNode next = null;
    ListNode(int val) {
        this.val = val;
    }
}*/

package 链表;
public class Palindrome {
 
 public static void main(String[] args) {
  ListNode a1=new ListNode(1);
  ListNode a2=new ListNode(2);
  ListNode a3=new ListNode(3);
  ListNode a4=new ListNode(2);
  ListNode a5=new ListNode(3);
  
  a1.next=a2;
  a2.next=a3;
  a3.next=a4;
  a4.next=a5;
  
  System.out.println(isPalindrome(a1));
 }
 
 public static boolean isPalindrome(ListNode pHead) {
        // write code here
  if(pHead==null){
   return false;
  }
  int n=0;
  ListNode next=pHead;
  while(next!=null){
   n++;
   next=next.next;
  }
  int array[] =new int[n];
  next=pHead;
  int i=0;
  while(next!=null){
   array[i]=next.val;
   i++;
   next=next.next;
  }
  
  int arrayR[]=new int[n];
  for(int j=array.length-1,k=0;j>=0;j--,k++){
   arrayR[k]=array[j];
  }
  for(int j=0;j<array.length;j++){
   if(array[j]!=arrayR[j]){
    return false;
   }
   if(j==array.length-1){
    return true;
   }
  }
  return false;
    }
}

阅读全文
0 0