给你一个单链表的头节点 head
,请你判断该链表是否为回文链表。如果是,返回 true
;否则,返回 false
。
解法:利用栈先进先出的特点,存储每个结点的值,然后反向比对n/2个元素即可。
class Solution {
public:
bool isPalindrome(ListNode* head) {
stack<int>st;
ListNode * pre = head;
ListNode * tail = head;
int num=0;
while(tail!=nullptr)
{
st.push(tail->val);
tail=tail->next;
num++;
}
for(int i=0;i<=num/2;i++)
{
int x = st.top();st.pop();
if(pre->val!=x) return false;
pre=pre->next;
}
return true;
}
};