class PalindromeList { public: ListNode* reverse(ListNode *A){ if(A->next == nullptr){ return A; } ListNode * fastP = A -> next; ListNode * slowP = A; while(fastP->next != nullptr){ ListNode *fastNext = fastP->next; fastP->next =slowP; slowP = fastP; fastP = fastNext; } A ->next =nullptr; return fastP; } bool chkPalindrome(ListNode* A) { // write code here if(A->next == nullptr){ return false; } if(A->next->next ==nullptr ){ if(A->val == A->next->val){ return true; } return false; } ListNode * begin = A; ListNode * fastP = A; ListNode * slowP = A; while(fastP->next!= nullptr && fastP->next->next != nullptr ){ fastP = fastP->next->next; slowP = slowP->next; } slowP = slowP -> next; //奇数 偶数都需要处理 ListNode* reverseList = reverse(slowP); while(reverseList != nullptr && begin !=nullptr){ if(reverseList -> val != begin ->val){ return false; } reverseList = reverseList->next; begin =begin->next; } return true; } };