【刷题】验证回文字符串

该博客探讨了如何高效地判断一个字符串是否为回文。主要介绍了两种方法,一种是直接比较首尾字符,另一种是删除一个字符后检查剩余部分是否为回文。通过封装辅助函数,实现了在发现不匹配时尝试删除左右字符并重新判断的逻辑,提高了算法效率。
摘要由CSDN通过智能技术生成

题目要求:

 

代码实现:

bool validPalindrome(char* left, char* right){    //一次判断某字符串(或者片段)是否为回文字符串
    while(left < right){
        if(*left != *right){
            return false;
        }
        left++;
        right--;
    }
    return true;
}




bool palindrome(char* str ) {        //入口:从头判断字符串是否回文
    int len = strlen(str);
    if(len == 1)    return true;
    
    char* p = str;
    char* q = str + len - 1;
    
    while(p < q)
    {
        if(*p != *q){                //注意:不相等的时候要么删除左侧字符,要么删除右侧字符   
            return validPalindrome(p+1, q) || validPalindrome(p, q-1);    //此处只调用一次就返回结果
        }
        p++;
        q--;
    }
    return true;
}

重难点:

        1、第一次判断到不是回文数的时候,要清楚:既可以删除左指针指向的字符,又可以删除右指针指向的字符

        2、将判断回文字符串的代码再单独封装一次,这样方便两次调用并使用“ 逻辑或 ”的关系,此处调用的时候,就会判断剩余的字符串是否为回文数,是的话,整个字符串就是回文数;不是的话,说明删除一个字符后依然不是回文字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值