在C++中检查字符串是否为回文的递归函数
我们得到一个字符串 Str 作为输入。目标是使用递归函数查找输入字符串是否为回文词。回文字符串是从前端或后端读取时形成相同单词的那些字符串。长度为 0 的字符串被认为是回文。反转回文字符明智的形式,与原始字符串相同。
回文的例子有:-女士、abcba、马拉雅拉姆语等
例子
输入 - Str = “马拉雅拉姆语”
输出 - 输入字符串是回文。
说明 -
Str[ 0 到 8 ] = 马拉雅拉姆语
反向 Str [ 8 到 0 ] = 马拉雅拉姆语
两个字符串相同。
输入 - Str = “教程”
输出 - 输入字符串不是回文。
说明-
Str[ 0 到 7 ] = 教程
反向 Str [ 7 到 0 ] = lairotut
两个字符串不一样
下面程序中使用的方法如下
在这种方法中,我们将检查字符串是否包含单个字符,如果为真,则它是回文。如果不是,则递归遍历整个字符串以获取剩余字符,如果对应字符不同,则中断递归。
取输入字符串 Str[] 并计算其长度。
如果长度为 0,则设置 result=1。
否则设置 result=checkPalindrome(Str, 0, length - 1) 其中 0 是第一个索引, lenght - 1 是最后一个索引
如果任何字符与其在字符串中的对应字符不匹配,则函数 checkPalindrome(char str[], int first, int last) 返回 0。
如果第一个和最后一个索引相同,则字符串有一个字符,则返回 1。
如果不是,则通过 first++, last-- 和 recursive call 检查除结束字符之外的其余字符checkPalindrome(str, first, last)。
在所有递归结束时,我们将得到一个结果。
如果它是 1 则输入字符串是回文。
否则输入字符串不是回文。
在 main 中打印结果。
示例
#include <bits/stdc++.h>输出结果using namespace std;
int checkPalindrome(char str[], int first, int last){
if (first < last + 1){
first++;
last--;
return checkPalindrome(str, first, last);
}
if (first == last){
return 1;
}
if (str[first] != str[last]){
return 0;
}
return 1;
}
// 驱动程序代码
int main(){
char Str[] = "madam";
int result;
int length = strlen(Str);
if (length == 0){
result=1;
}
else{
result=checkPalindrome(Str, 0, length - 1);
}
if (result==1){
cout << "输入字符串是回文。";
}
else{
cout << "输入字符串不是回文。";
}
return 0;
}
如果我们运行上面的代码,它将生成以下输出
输入字符串是回文。
以上是 在C++中检查字符串是否为回文的递归函数 的全部内容, 来源链接: utcz.com/z/359040.html