【问题标题】:Determine whether or not a given string is a valid palindrome or not. JS确定给定字符串是否为有效回文。 JS
【发布时间】:2016-02-29 17:51:18
【问题描述】:

回文是一个单词、短语、数字或其他符号或元素的序列,其含义可以正向或反向以相同的方式解释。著名的例子包括“Amore, Roma”、“A man, a plan, a canal: Panama”和“No 'x' in 'Nixon'”。 - 维基百科

我们的目标是确定给定字符串是否为有效回文。

测试用例:

Test.assertEquals(palindrome("Amore, Roma"), true)
Test.assertEquals(palindrome("A man, a plan, a canal: Panama"), true)
Test.assertEquals(palindrome("No 'x' in 'Nixon'"), true)
Test.assertEquals(palindrome("Abba Zabba, you're my only friend"), false)

到目前为止我的代码:

function palindrome(string) {
    var str = string.toLowerCase().replace(/[^a-z]+/g,"");
    var rev= str.split("").reverse().join("");

    if (string == rev) {
        return true; 
    } else {
        return false;
    }
}

显然join 未定义,但我不明白为什么?

【问题讨论】:

  • 您遇到的具体错误是什么?
  • 你需要检查str == rev,你可以通过只返回str == rev而不需要ifelse来简化代码
  • 你能举出它不起作用的具体例子吗?

标签: javascript palindrome


【解决方案1】:

我通过以下更改尝试了您的示例,它适用于 OSX 10.9:

function palindrome(string) {
    var str = string.toLowerCase().replace(/[^a-z]/g, "");

    var rev = str.split("").reverse().join("");

    return (str == rev);
}

从 1.1 版开始,数组 join() 方法似乎已经成为 Javascript 的一部分——具体的错误消息和对您的环境的一些描述都应该有助于解决这个问题。

【讨论】:

    猜你喜欢
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-10
    • 2011-01-08
    • 1970-01-01
    相关资源
    最近更新 更多