一、题目描述
给你一个单链表的头节点 head
,请你判断该链表是否为回文链表
如果是,返回 true
;否则,返回 false
。
二、题目分析
栈的思想
三、题目代码
/*** 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) {if (head==null||head.next==null){// 如果链表为空或只有一个节点,直接返回 truereturn true;}Stack <Integer> stack= new Stack<>();ListNode curr=head;while (curr!=null){ // 将链表中的元素推入栈stack.push(curr.val);curr=curr.next;}curr=head;while(curr!=null){ // 再次遍历链表,比较栈顶元素和当前节点值是否相同if (curr.val!=stack.pop()){return false; // 如果不相等,说明不是回文链表}curr=curr.next;}return true;}
}