美文网首页
判断是否回文(palindromes)。

判断是否回文(palindromes)。

作者: Hoistthecolors | 来源:发表于2017-07-07 17:08 被阅读16次

代码

function palindrome(str) {
    // 排除干扰项
    str = str.toLowerCase().replace(/[^a-z0-9]/g, '');
    // 设置边界条件
    if (str.length < 2) {
        return true;
    }
    // 检测首尾是否相等不相等,如果不等就直接返回 false
    if (str[0] !== str[str.length - 1]) {
        return false;
    }

    // 递归调用
    return palindrome(str.slice(1, -1));
}

解释

  • 整体思路是,递归地判断字符串的首尾是否相等
  • 如果相等,就排除掉首尾字符,继续判断首尾是否相等,注意在最后的 return 那里,传入参数的改变
  • 边界条件(跳出条件) 只需要设置为 str.length < 2,因为当 length 为 0 或者 1 的时候就表示这个字符是回文字符串
  • 最后的递归调用,可以用 else 包起来,但其实没有必要。可以这样去理解,一旦前面的判断生效了,就会直接跳出,也就不会执行到这里因为。既然能执行到这一步,就表示前面的 if 判断都没有生效。

相关文章

网友评论

      本文标题:判断是否回文(palindromes)。

      本文链接:https://www.haomeiwen.com/subject/fahrhxtx.html