首页 > 其他 > 详细

234. 回文链表

时间:2019-06-02 19:07:06      阅读:111      评论:0      收藏:0      [点我收藏+]

请判断一个链表是否为回文链表。

示例 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;
    }
}

 

234. 回文链表

原文:https://www.cnblogs.com/czsy/p/10963878.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!