题目
注意由于是单链表,无法双向遍历,所以无法直接用双指针,我们可以用找到中心点逆转后半部分,再利用双指针进行判断。
最简单的方法–用栈实现
整体思路:
1.用栈把链表中的值压入,而后就可以从后遍历链表中的值了。
2.比较栈和链表即可。
class Solution {
public:
bool isPalindrome(ListNode* head) {
stack<int>q;
ListNode* t=head;
//用于更新栈中元素
while(t!=NULL){
q.push(t->val);
t = t->next;
}
//进行判断
while(head!=NULL){
if(head->val!=q.top()