所以我试图写一个C++回文项目。到目前为止,我已经提出了两个功能。我该如何修复这个C++回文代码?
void isPal(string str)
{
int a = 0, b = str.length();
string checker1 = "", checker2 = "";
for (; a != str.length(); a++)
checker1 += str[a];
for (; b >= 0; b--)
checker2 += str[b];
cout << checker1 << " " << checker2 << endl;
if (checker1 == checker2)
cout << "Palindrome baby!" << endl;
if (checker1 != checker2)
cout << "Not palindrome!" << endl;
}
bool isit(string str)
{
int x = str.length(), counter = 0;
if (str.length() <= 1)
return true;
else
{
while (counter != str.length())
{
string strNew = str.erase(0, 1);
strNew = strNew.erase(strNew.length() - 1);
string strNewer = str.replace(1, x, strNew);
return str[0] == str[str.length()] && isit(strNewer);
counter++;
}
}
}
为什么第一个函数总是返回“Not palindrome!” if语句? 我承认第二个是一团糟。我甚至不确定自己在写作时完全理解了自己的想法。我的意图是提出一个类似于递归Python回文代码的答案。
在蟒蛇电感情况下只是
return str[0] == str[-1] and isit(str[1:-1])
我如何写一个感性的C++代码回文?
更新:-4为初学者的问题!真的吗? :)
不应该是'str.length() - 1'吗?编辑:是的,它应该。我甚至不知道你的代码如何运行。它应该是segfaulting。 – steveg89
@ steveg89:这是UB。 –