力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

思路: 使用栈存入后,在比较弹出顺序是否等于链表遍历顺序

 public boolean isPail (ListNode head) {
 
        // write code here
 
        //使用栈的特性
 
        if(head==null){
 
            return false;
 
        }
 
  
 
        //回文正反遍历相同
 
        Stack<ListNode> stack = new Stack<>();
 
        ListNode cur = head;
 
        while(cur!=null){
 
            stack.add(cur);
 
            cur = cur.next;
 
        }
 
        //栈弹出和链表从头遍历,每个值都相等说明是回文
 
        cur = head;
 
        while(cur!=null){
 
            if(cur.val!=stack.pop().val){
 
                return false;
 
            }
 
            cur = cur.next;
 
        }
 
        return true;
 
    }