234. 迴文鏈表

請判斷一個鏈表是否爲迴文鏈表。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;
    }
}
相關文章
相關標籤/搜索