234 Palindrome Linked List
bool isPalindrome(ListNode* head) {
if (!head || !head->next) return true;
stack<int> s;
ListNode *iter_slow = head;
ListNode *iter_fast = head;
int size = 0;
while (iter_fast) {
if (!iter_fast->next) {
size += 1;
break;
}
iter_fast = iter_fast->next->next;
size += 2;
s.push(iter_slow->val);
iter_slow = iter_slow->next;
}
if (size % 2 != 0)
iter_slow = iter_slow->next;
while (iter_slow && !s.empty()) {
if (iter_slow->val != s.top())
return false;
iter_slow = iter_slow->next;
s.pop();
}
return true;
}Last updated