请编写一个函数,检查链表是否为回文。
给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。
测试样例:
{1,2,3,2,1}
返回:true
{1,2,3,2,3}
返回:false
/*
public class ListNode {
int val;
ListNode next = null;
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = 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;
}
}
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;
}
}