请判断一个链表是否为回文链表。
示例 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||head.next==null) return true;ListNode fast=head,slow=head,pre=null;while (fast!=null&&fast.next!=null){pre=slow;slow=slow.next;fast=fast.next.next;}//快慢指针找出中点pre.next=null;//从中点切断链表pre=null;while (slow!=null)//倒置后部分链表{ListNode temp=slow.next;slow.next=pre;pre=slow;slow=temp;}while (pre!=null&&head!=null)//将两个链表比较{if(pre.val!=head.val) return false;pre=pre.next;head=head.next;}return true;}
}