請判斷一個鏈表是否爲迴文鏈表。spa
示例 1:code
輸入: 1->2 輸出: false
示例 2:blog
輸入: 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; } }