@[TOC]
题目描述
解题思路
- 遍历链表,将每个节点值依次入栈;
- 再次遍历链表,每访问一个节点就出栈一个元素,比较该节点值与出栈元素是否相等,不等返回false;
- 成功遍历,返回true。
代码实现
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */ class Solution { public boolean isPalindrome(ListNode head) { Stack<Integer> stack = new Stack<Integer>(); ListNode temp = head; while(temp != null){ //遍历链表,入栈节点值 stack.push(temp.val); temp = temp.next; } while(head != null){ if(head.val != stack.pop()){ //依次比较节点值与出栈元素是否相等 return false; } head = head.next; } return true; } }