【leetcode 連結串列】234. Palindrome Linked List C++
阿新 • • 發佈:2021-01-09
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
bool isPalindrome(ListNode* head) {
if(!head || !head->next) return true;
ListNode *newHead = new ListNode(0), *p, *q, *t;
newHead->next = head;
int len = 0, cnt = 1;
for(p = head; p; p = p->next) len++;
for(p = head; cnt < len/2; cnt++) {
q = p->next;
p->next = q-> next;
q->next = newHead->next;
newHead->next = q;
}
if(len % 2) q = p->next->next;
else q = p->next;
p = newHead->next;
for(cnt = 0; cnt < len/2; p = p->next, q = q->next, cnt++) {
if(p->val != q->val) return false;
}
return true;
}
};