请判断一个链表是否为回文链表。
示例 1:
输入: 1->2
输出: false
示例 2:
输入: 1->2->2->1
输出: true
判断 正反两个链表的元素是否相同即可
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public boolean isPalindrome(ListNode head) {
if(head==null)
return true;
ListNode mhead=head;
ListNode mbackHead=new ListNode(head.val); //创建一个反向的链表
head=head.next;
while(head!=null){
ListNode listnode=new ListNode(head.val);
listnode.next=mbackHead; //将反向链表的下个节点指向正向链表的前个节点
mbackHead=listnode;
head=head.next;
}
while(mbackHead!=null&&mhead!=null){
if(mbackHead.val!=mhead.val){
return false;
}
mbackHead=mbackHead.next;
mhead=mhead.next;
}
return true;
}
}