所以我觉得我已经接近了,但我只是错过了一些东西。
此算法应检查特定的单词/句子是否向后读取相同的内容。显然,对于比较,应忽略所有非alpha数字字符。
function palindrome(str) {
var pure = str.replace(/[\W_]/g, "").toLowerCase();
var arr = [];
arr = pure.split("").reverse();
var x = arr.join("");
if(str === x){
return true;
}
return false;
}
palindrome("eye");
感谢任何提示。
答案 0 :(得分:2)
您需要将反向字符串与pure
而不是str
进行比较,尽管您可以通过删除不必要的变量和if
语句来简化它。
function palindrome(str) {
// remove non-word character including `_`
var pure = str.replace(/[\W_]/g, "").toLowerCase();
// split into character array, reverse it and join the array
var x = pure.split("").reverse().join("");
// compare the strings
return pure === x;
}
console.log(palindrome("eye"));
console.log(palindrome("ey e"));
console.log(palindrome("ey"));
答案 1 :(得分:1)
这可以递归地完成
function palindrome(s)
{
if (s.length<2)
return true;
return (s[0]==s[s.length-1]) && palindrome(s.substr(1,s.length-2));
}
答案 2 :(得分:1)
function palindrome(str) {
var pure = str.replace(/[^0-9a-z]/gi, "").toLowerCase();
var arr = [];
arr = pure.split("").reverse();
var x = arr.join("");
if(pure === x){
return true;
}
return false;
}
答案 3 :(得分:0)
您可以使用此
function palindrome(str) {
if(str == str.split("").reverse().join("")) {
return true;
} else {
return false;
}
}
console.log(palindrome('eye'));
注意它仅适用于简单的ASCII字符
仅使用ASCII字符编辑:
function palindrome(str) {
pure = str.replace(/[\W_]/g, "").toLowerCase();
if(pure == pure.split("").reverse().join("")) {
return true;
} else {
return false;
}
}
console.log(palindrome('eye'));
答案 4 :(得分:0)
你也可以这样做......
var isPalindrome = s => { var t = s.toLowerCase()
.replace(/\s+/g,"");
return [].slice.call(t)
.reverse()
.every((b,i) => b === t[i]);
};
console.log(isPalindrome("Was it a car or a cat I saw"));
console.log(isPalindrome("Was it a car or a cab I saw"));