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;
}
}
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;
}
}