Javascript 回文算法

Javascript 回文算法,javascript,arrays,algorithm,Javascript,Arrays,Algorithm,所以我觉得我正在接近这一点,但我只是错过了一些东西 该算法应检查特定单词/句子是否与反向阅读相同。显然,在比较时应该忽略所有非alpha num字符 函数回文(str){ var pure=str.replace(/[\W\u]/g,“”).toLowerCase(); var-arr=[]; arr=pure.split(“”.reverse(); var x=arr.join(“”); 如果(str==x){ 返回true; } 返回false; } 回文(“眼”)您需要将反向字符串与pu

所以我觉得我正在接近这一点,但我只是错过了一些东西

该算法应检查特定单词/句子是否与反向阅读相同。显然,在比较时应该忽略所有非alpha num字符

函数回文(str){
var pure=str.replace(/[\W\u]/g,“”).toLowerCase();
var-arr=[];
arr=pure.split(“”.reverse();
var x=arr.join(“”);
如果(str==x){
返回true;
}
返回false;
}

回文(“眼”)
您需要将反向字符串与
pure
进行比较,而不是将
str
进行比较,尽管您可以通过删除不必要的变量和
if
语句使其更简单

函数回文(str){
//删除非单词字符,包括`_`
var pure=str.replace(/[\W\u]/g,“”).toLowerCase();
//拆分为字符数组,将其反转并加入数组
var x=pure.split(“”.reverse().join(“”);
//比较字符串
返回纯===x;
}
log(回文(“眼”));
log(回文(“eye”);

log(回文(“ey”)
您需要将反向字符串与
pure
进行比较,而不是将
str
进行比较,尽管您可以通过删除不必要的变量和
if
语句使其更简单

函数回文(str){
//删除非单词字符,包括`_`
var pure=str.replace(/[\W\u]/g,“”).toLowerCase();
//拆分为字符数组,将其反转并加入数组
var x=pure.split(“”.reverse().join(“”);
//比较字符串
返回纯===x;
}
log(回文(“眼”));
log(回文(“eye”);

log(回文(“ey”)这可以递归地完成

function palindrome(s)
{
   if (s.length<2)
     return true;
   return (s[0]==s[s.length-1]) && palindrome(s.substr(1,s.length-2));
}
函数回文
{

如果(s.length这可以递归地进行

function palindrome(s)
{
   if (s.length<2)
     return true;
   return (s[0]==s[s.length-1]) && palindrome(s.substr(1,s.length-2));
}
函数回文
{
如果(s.length您可以使用此

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'));
你可以用这个

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'));

你也可以这样做

var isPalindrome=s=>{var t=s.toLowerCase()
.替换(/\s+/g,“”);
return[].slice.call(t)
.reverse()
.每((b,i)=>b==t[i]);
};
log(isPalindrome(“我看到的是一辆汽车还是一只猫”);

log(isAlindrome(“我看到的是一辆汽车还是一辆出租车”);
您也可以按如下方式执行此操作

var isPalindrome=s=>{var t=s.toLowerCase()
.替换(/\s+/g,“”);
return[].slice.call(t)
.reverse()
.每((b,i)=>b==t[i]);
};
log(isPalindrome(“我看到的是一辆汽车还是一只猫”);

console.log(isPalindrome(“我看到的是一辆车还是一辆出租车”);
你的问题是什么?这不是一个让人们为你写的网站,也不是一个提供一般反馈的网站;它是针对特定问题的。只针对懒惰的人:p;这里有一个可以帮助你的链接(首先在谷歌上)你的问题是什么?这不是一个让人们为你写的网站,也不是一个提供一般反馈的网站;它是针对特定问题的。只针对懒惰的人:p;这里有一个链接可以帮助你(首先在谷歌上)一个关于为什么你需要
if
?只需使用
return str==str.split(“”)。reverse().join(“”;
非常正确。我一直保持OP的编码标准。如果
,为什么需要
呢?只需使用
返回str==str.split(“”)。reverse().join(“”;
非常正确。我一直保持OP的编码标准。@mbt86:很高兴它有帮助!:@mbt86:很高兴它有帮助!:)因此,您可以只指定要包含的范围而不是\W?实际上\W等于[^0-9a-z]。因此,您可以只指定要包含的范围而不是\W?实际上\W等于[^0-9a-z]。