题目:
题源:LeetCode
题解:
遍历一遍得出链表长度,将链表后半段反转建立新的链表,然后将新链表与原链表的前半段元素比较是否相同即可
代码:
class Solution {
public:
bool isPalindrome(ListNode* head) {
int n=0;
ListNode *left=head,*right=head,*list=NULL,*temp=NULL;
while(head){
n++;
head=head->next;
}
int mid=n/2;
while(mid){
right=right->next;
mid--;
}
while(right){
temp=right;
right=right->next;
temp->next=list;
list=temp;
}
mid=n/2;
while(mid){
mid--;
if(left->val!=list->val){
return false;
}else{
left=left->next;
list=list->next;
}
}
return true;
}
};