解题思路:回文结构的链表元素个数为偶数,因此先求出链表节点个数。为偶数时,用栈来存储前半部分节点的值,然后与后半部分节点中的值依次比较。
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ public class Solution { /** * * @param head ListNode类 the head * @return bool布尔型 */ public boolean isPail (ListNode head) { // write code here Stack<Integer> s=new Stack<>(); ListNode H=head; int num=0; while(head!=null){ num++; head=head.next; } if(num%2==0){ head=H; for(int i=0;i<num/2;i++){ s.push(head.val); head=head.next; } for(int i=0;i<num/2;i++){ if(head.val==s.peek()){ s.pop(); head=head.next; } else{ return false; } } return true; } return false; } }