版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/QyW_W/article/details/77123763
回文字符串即从左到右或从右到左读完全一样的字符串,如 A,ABA,1A1 等。
其特点是左右两端相同,利用递归逐次判断两端是否一致即可。
下面给出 C++ 实现。
// str 字符串
// len 字符串长度
// left 比较的左端
// right 比较的右端
bool judgeRecursion(string str, int len, int left, int right) {
// 边界条件:剩余长度为 0 或 1,无需再进行判断
if (!len || len == 1)
return true;
// 比较的左右端不一致
else if (str[left] != str[right])
return false;
// 递归比较
return judgeRecursion(left+1, right-1, len-2, str);
}
假如不能使用递归,我们可以利用一个栈来做判断,又或者是直接用变量控制比较下标。但这两种都不如递归直观了。
JS 版本的实现请看这里。
欢迎来我的 Github 主页。