递归:C++判断回文字符串

版权声明:本文为博主原创文章,未经博主允许不得转载。 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 主页

猜你喜欢

转载自blog.csdn.net/QyW_W/article/details/77123763