题目
给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。
思路
遍历链表,得到链表的长度,根据链表的长度,创建一个新的数组,将链表每个节点的值依次放入数组之中,最后根据双指针原理,比较首尾节点的值依次是否等。
代码
public boolean isPalindrome(ListNode head) {
ListNode cur=head;
//统计链表长度
int len=0;
while(cur!=null){
len++;
cur=cur.next;
}
int []res=new int [len];
cur = head;
for(int i=0;i<len;i++){
res[i]=cur.val;
cur=cur.next;
}
int l=0;
int r=len-1;
while(r>=l){
if(res[l]!=res[r]){
return false;
}
l++;
r--;
}
return true;
}