检查String是否是JavaScript中的Palindrome

时间:2015-06-27 16:34:15

标签: javascript arrays

此任务的要求是代码为输入字符串返回“true”或“false”。字符串可以是简单的单词或短语。另一个问题并未解决这些需求。请重新打开并在这里回答。我正在研究一个函数,以检查给定的字符串是否是回文。我的代码似乎适用于简单的单字回文,但不适用于以大写字母或空格为特征的回文。

function palindrome(str) 
{
    var palin = str.split("").reverse().join("");

    if (palin === str){
        return true;
    } else {
        return false;
    }
}   

palindrome("eye");//Succeeds
palindrome("Race car");//Fails

8 个答案:

答案 0 :(得分:6)

首先将字符串转换为小写。此外,删除不是字母表的字符。所以字符串比较变成一个数组,然后将其反转,并再次将其转换为字符串。

Step 1: str1.toLowerCase().replace(...) => "Race car" => "race car" => "racecar"
Step 2: str2.split("") => ["r","a","c","e","c","a","r"] => .reverse().join() => "racecar"
Result: str1 === str2

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

alert(palindrome("eye")); //true
alert(palindrome("Race car")); //true
alert(palindrome("Madam, I'm Adam")); //true

答案 1 :(得分:3)

类似if (word === word.split('').reverse().join('')) {/*its a palindrome!*/}我会说

isPalindrome字符串扩展名:

String.prototype.isPalindrome = function () {
  var cleaned = this.toLowerCase().match(/[a-z]/gi).reverse();
  return cleaned.join('') === cleaned.reverse().join('');
}

var result = document.querySelector('#result');
result.textContent = "'eye'.isPalindrome() => " + 'eye'.isPalindrome() +
                     "\n'Something'.isPalindrome() => " + 'Something'.isPalindrome() +
                     "\n'Race Car'.isPalindrome() => " + 'Race Car'.isPalindrome() +
                     "\n'Are we not drawn onward, we few, drawn onward to new era?'.isPalindrome() => " + 
                        'Are we not drawn onward, we few, drawn onward to new era?'.isPalindrome() +
                     "\n'Never even or odd'.isPalindrome() => " + 'Never even or odd'.isPalindrome() +
                     "\n'Never odd or even'.isPalindrome() => " + 'Never odd or even'.isPalindrome();
;
<pre id="result"></pre>

答案 2 :(得分:1)

function palindrome(str) {
    let letters = str.split('').filter(function (str) {
        return /\S/.test(str);
    });
    let reversedLetters = str.split('').reverse().filter(function (str) {
        return /\S/.test(str);
    });

    for (let i = 0; i < letters.length; i++) {
        if (letters[i].toLowerCase() !== reversedLetters[i].toLowerCase()) {
            return false;
        }
    }
    return true;
}
console.log(palindrome("eye")); //true
console.log(palindrome('Race car')); //true

答案 3 :(得分:1)

const palindromes = arrayOfWords.filter((item) => {
    return item === item.split('').reverse().join('');
})

这是一个示例:-)

答案 4 :(得分:0)

{{1}}

答案 5 :(得分:0)

// 1。将字符串更改为数组     // 2。使用相反的方法     // 3。以字符串形式返回数组     // 4。 return input =新的反向字符串

var lowerCasedString = inputString.toLowerCase(); var reversedString = lowerCasedString.split("").reverse().join(""); return reversedString === lowerCasedString;
}
希望这会有所帮助:

答案 6 :(得分:0)

使用ES6的回文症

const checkPalindrome=(str)=> {
  return str.toLowerCase().trim() === str.toLowerCase().trim().split('').reverse().join('');
}
console.log(checkPalindrome("Level "))

答案 7 :(得分:0)

尽可能简单!

function checkStrForPalindorme(string) {
  const str = string.toLowerCase().trim();
  const reversedStr = str.split("").reverse().join("");

  return str === reversedStr;
}

console.log(checkStrForPalindorme("aaffaa "))
console.log(checkStrForPalindorme("dummy"))