NC96 判断一个链表是否为回文结构


出息了,这波想到递归其他大多数都是链表生成头尾链表
[https://www.nowcoder.com/practice/3fed228444e740c8be66232ce8b87c2f?tpId=188&&tqId=38562&rp=1&ru=/activity/oj&qru=/ta/job-code-high-week/question-ranking]
//递归

描述
给定一个链表,请判断该链表是否为回文结构。
回文是指该字符串正序逆序完全一致。

数据范围: 链表节点数 0 \le n \le 10^70≤n≤10 
7
 ,链表中每个节点的值满足 |val| \le 10^7∣val∣≤10 
7
 
示例1
输入:
{1}

返回值:
true

示例2
输入:
{2,1}

返回值:
false

说明:
2->1   
示例3
输入:
{1,2,2,1}

返回值:
true

说明:
1->2->2->1   

class Solution {
public:
    /**
     * 
     * @param head ListNode类 the head
     * @return bool布尔型
     */
bool How=false;
struct ListNode*a;
bool d(struct ListNode* b){
    if(b==NULL){
           return true;
    }
    else{
    How=d(b->next);
         if(a->val!=b->val){//a为全局变量,每次把a移动,因为是递归所以b每次就返回上有个,回文直接就比较了
             How=false;
         }
        a=a->next;
    }
    return How;
}
bool isPail(struct ListNode* head ) {
    // write code here
    a=head;
    struct ListNode* b=head;
    return d(b);
}
};

还有方法就是转换成两个链表