回文链表
请判断一个链表是否为回文链表。
示例 1:
输入: 1->2
输出: false
示例 2:
输入: 1->2->2->1
输出: true
想法一:找到链表中点,然后反转链表前一部分,或者链表后半部分,然后比较,
想法二:采用递归,先找到最后一个节点,在依次和第一个比较,(感觉这种方法更简洁一些,不过要在方法外定义个表头,占用空间,写了方法二的代码)
class Solution {
private ListNode first;
public boolean Palindrome(ListNode head)
{
if(head==null)
{
return true;
}
boolean temp = Palindrome(head.next);
if(temp==false)
{
return false;
}
if(head.val!=first.val)
{
return false;
}
first=first.next;
return true;
}
public boolean isPalindrome(ListNode head){
first=head;
return Palindrome(head);
}
}