C++ 递归布尔回文(字符串 s)
C++ Recursive Boolean Palindrome(string s)
对于计算机科学课,我们正在进入递归函数,我个人不喜欢,但我们需要使用它。以下代码旨在检查字符串输入"s"是否为回文。
bool palindrome(string s)
{
int len = s.length();
char start = s.at(0);
char last = s.at(0);
if(len>1)
{
last = s.at(len);
}
if(start == last && len<=2)
{
return true;
}
else if(start != last)
{
return false;
}
else
{
s = s.substr(1, s.size() - 2);
return palindrome(s);
}
}
运行它并输入字符串后,我收到运行时错误"std::out_of_range",我不确定我在哪里搞砸了。我对递归函数和 c++ 很陌生,所以任何帮助都会很棒。
如果需要我没有提供的任何其他信息,请告诉我。
*注意:我们需要使用 bool 函数,并且只能调用我们输入到函数中的字符串。
last = s.at(len);
应该是
last = s.at(len-1);
如果一个字符串的长度为 len
,那么其中字符的位置将是 0..len-1,这就是last = s.at(len)
导致您得到的错误的原因。
相关文章:
- 将 S1 转换为回文,并将 S2 作为其子字符串
- 程序以查找给定字符串中回文的子字符串的数量
- 如何创建一个程序来标识最长的子字符串回文,而不考虑字母大小写
- 返回字符串的散点回文计数
- C++ 递归布尔回文(字符串 s)
- 寻找一种更有效的方法来使用 STL 函数检查字符串是否为回文
- 回文字符串问题:为什么我必须放+1而不是-1才能让这个代码工作
- 尝试使用C++实现检测字符串中回文的递归版本.在这里遇到了一些麻烦
- 找到字符串中的所有回文
- 验证字符串是否为回文的函数
- 字符串回文程序不会忽略案例
- 字符串中的最小回文计数
- 为给定字符串生成所有可能的回文
- 仅删除一个元素以制作字符串回文
- 使用数组和无指针创建回文字符串检查器C++
- 检查字符串是否为回文
- 回文子字符串程序无法运行
- 带有堆栈和队列的字符串回文(c++)
- 字符串回文在String.size()上给出错误答案,但在String.seize()-1上给出正确答案
- DP方法,用于生成字符串回文时应添加的最小字符数