@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;
}
}