请判断一个链表是否为回文链表。
示例 1:
输入: 1->2 输出: false
示例 2:
输入: 1->2->2->1 输出: true
解答:将链表的前半部分入栈,然后再从链表的后半部分开始遍历,遍历一个出栈一次,如果相等继续遍历,不等就说明不是回文串,返回false即可。
class Solution { public boolean isPalindrome(ListNode head) { if(head==null) return true; Stack<ListNode> stack = new Stack<>(); ListNode p1 = head; ListNode p2 = head; while(p2!=null && p2.next!=null){ stack.push(p1); p1 = p1.next; p2 = p2.next.next; } if(p2!=null) p1 = p1.next; while(p1!=null){ if(stack.pop().val!=p1.val){ return false; } p1 = p1.next; } return true; } }
原文:https://www.cnblogs.com/czsy/p/10963878.html