文章目录
- 题目
- 代码
- 运行截图
题目
(回文)回文是一种字符串,正读和反读该字符都会得到同样的结果。回文的例子包括“radar”和able was ierei saw elba”等。请编写一个递归函数testPalindrome,如果一个字符串是回文,则返回true;否则返回false。请注意,像array对象一样,方括号运算符([ ])可用来选代遍历一个字符串中的所有字符。
代码
#include <iostream>
#include <string>using namespace std;bool testPalindrome(string, int);int main()
{string str;cout << "请输入一行字符串:";getline(cin, str); // 读入一行未知长度的字符串int length = str.size();if (testPalindrome(str, length)){cout << "True" << endl;}else{cout << "False" << endl;}return 0;
}bool testPalindrome(string s, int length) // 递归
{// 结束条件if (length == 0 || length == 1){return true;}if (s[0] != s[length - 1]){return false;}else{s = s.substr(1, length - 2); // 分割截取length = s.size();return testPalindrome(s, length);}
}// bool testPalindrome(string s)//非递归
// {
// bool flag = false;
// for (int i = 0; i < (s.size() / 2); i++)
// {
// if (s[i] == s[s.size() - 2])
// {
// if (i == (s.size() / 2) - 1)
// {
// flag = true;
// }
// }
// }// return flag;
// }