我很遗憾地阅读了与此主题相关的每篇文章,似乎无法解决我的问题。这让我很生气。
出于某种原因,在我的第二次或第三次迭代中,if(beg!= end)不会返回false。如果我输入“bool”而不是“blob”,它会正确返回false。
我打印并且结束以确保事情正常流动,但仍然找不到出错的地方。
谢谢!!!
#include <iostream>
#include <string>
using namespace std;
bool palindrome_check (string str)
{
string return_str;
int length = str.length()-1;
string beg = str.substr(0, 1);
string end = str.substr(length, 1);
if (beg != end)
{
// cout << beg << " " << end << endl;
return false;
}
else if ((str.length() > 2) && (str.length() != 0))
{
string new_str = str.substr(1, length - 1);
// cout << new_str << endl;
palindrome_check(new_str);
}
return true;
}
int main ()
{
string input;
cout << "Enter a string: ";
cin >> input;
bool is_palindrome = palindrome_check (input);
cout << is_palindrome << endl;
}
答案 0 :(得分:0)
您应该使用递归调用的返回值:
string new_str = str.substr(1, length - 1);
return palindrome_check(new_str);
}
return true;
你应该检查输入字符串的长度,然后从中提取第一个和最后一个字符。
如果你解决了两个错误,那么它应该没问题。