文章目录
前言
在面试中碰到这种题,需要考虑空间复杂度
一、回文结构是什么?
就是一个链表关于中点对称,或者关于中心轴对称
二、方法不断改进
1.直接放入栈判断
1.1思路
- 从头到尾遍历整个链表,将值放入栈中
- 在从头遍历链表,每到一个节点就出栈一个值
- 两个值相等就接着遍历
- 如果不相等就直接返回不是回文结构
- 如果直到栈为空了(或者头节点为空),就返回正确
1.2代码
public static boolean isPalindrome1(Node head) {
Stack<Node>stack = new Stack<Node>();
Node cur = head;
while(cur!=null) {
stack.push(cur);
cur=cur.next;
}
while(head!=null) {
if(head.value!=stack.pop().value) {
return false;
}el