查看: 417|回复: 0

[C/C++] 浅谈使用递归解决回文问题

[复制链接]

0

技术

9

魅力

1

原创

版主

禁止访问

Rank: 7Rank: 7Rank: 7

积分
7757
人气
176
分享
52

最佳新人活跃会员

发表于 2023-8-14 21:41:41 | 显示全部楼层 |阅读模式
哈哈哈,我回来辣!
众所周知,回文问题是一个非常经典的问题,我们需要判断一个数字是否为回文数
或者一个字符串是否回文,例如
"homo114411omoh"就是一个回文串
那么,我们可以编写如下代码:
[C] 纯文本查看 复制代码
#include <string>

bool isPlalindrome(std::string data)
{
    if (data.length() <= 1) {
        return true;
    }
}

先排除掉特殊情况(只有一个字符或者空串)
接下来使用递归判断
[C++] 纯文本查看 复制代码
#include <string>

bool isPlalindrome(std::string data)
{
    if (data.length() <= 1) {
        return true;
    }

    char first = data[0]; /* 第一个字符 */
    char last = data[data.length() -1]; /* 下标从0开始,所以减一 */
    if (first == last) {
        std::string shortString = data.substr(1,data.length() - 2); /* 去除first和last的字符串 */
        return isPlalindrome(shortString);
    } else {
        return false;
    }
}

整个调用如下:
isPlalindrome("abccba") a == a ,true
isPlalindrome("bccb") b == b ,true
isPlalindrome("cc") c == c ,true

你学会了吗
小菜鸡一枚~
Gitee主页:https://gitee.com/juruoqwq
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表