此任务的要求是代码为输入字符串返回"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
Run Code Online (Sandbox Code Playgroud)
首先,字符串转换为小写.此外,删除不是字母表的字符.所以字符串比较变成一个数组,然后反转它,并再次将它转换为字符串.
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
Run Code Online (Sandbox Code Playgroud)
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")); //trueRun Code Online (Sandbox Code Playgroud)
就像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();
;Run Code Online (Sandbox Code Playgroud)
<pre id="result"></pre>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11602 次 |
| 最近记录: |