哈哈哈,我回来辣!
众所周知,回文问题是一个非常经典的问题,我们需要判断一个数字是否为回文数
或者一个字符串是否回文,例如
"homo114411omoh"就是一个回文串
那么,我们可以编写如下代码:
[C] 纯文本查看 复制代码 #include <string>
bool isPlalindrome(std::string data)
{
if (data.length() <= 1) {
return true;
}
}
先排除掉特殊情况(只有一个字符或者空串)
接下来使用递归判断
[C++] 纯文本查看 复制代码 #include <string>
bool isPlalindrome(std::string data)
{
if (data.length() <= 1) {
return true;
}
char first = data[0]; /* 第一个字符 */
char last = data[data.length() -1]; /* 下标从0开始,所以减一 */
if (first == last) {
std::string shortString = data.substr(1,data.length() - 2); /* 去除first和last的字符串 */
return isPlalindrome(shortString);
} else {
return false;
}
}
整个调用如下:
isPlalindrome("abccba") a == a ,true
isPlalindrome("bccb") b == b ,true
isPlalindrome("cc") c == c ,true
你学会了吗
|