现给定一个链表ListNode* pHead,定义bool代表链表是否为回文,请编写程序。
测试样例:
{1,2,3,2,1}
返回:true
{1,2,3,2,3}
返回:false
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};*/
class Palindrome {
public:
bool isPalindrome(ListNode* pHead) {
// write code here
vector<int> tmp;
ListNode* fast = pHead;
ListNode* slow = pHead;
while(fast != nullptr && fast->next != nullptr){
tmp.push_back(slow->val);
fast = fast->next->next;
slow = slow->next;
}
if(fast != nullptr) slow = slow->next;
while(slow != nullptr){
if(slow->val != tmp.back()) return false;
slow = slow->next;
tmp.pop_back();
}
return true;
}
};