Javascript 使用循环查找下一个回文

Javascript 使用循环查找下一个回文,javascript,function,for-loop,palindrome,Javascript,Function,For Loop,Palindrome,我想找到下一个最小的回文,但我不允许使用一些内置函数。因此,我创建了以下代码: 功能反转(nums){ var reverse=“”; 对于(var i=String(nums).长度-1;i>=0;i--){ 反向+=字符串(nums)[i]; } 反向返回; } 函数回文(num){ if(字符串(num).长度

我想找到下一个最小的回文,但我不允许使用一些内置函数。因此,我创建了以下代码:

功能反转(nums){
var reverse=“”;
对于(var i=String(nums).长度-1;i>=0;i--){
反向+=字符串(nums)[i];
}
反向返回;
}
函数回文(num){
if(字符串(num).长度<2){
返回num+1
}
对于(变量i=num+1;iconsole.log(回文(23))//32
检查应与
i
相反,而不是与
num
相反。尝试以下条件

if (String(i) === reverse(i)) { ... }
正确的代码是:

功能反转(nums){
var reverse=“”;
对于(var i=String(nums).长度-1;i>=0;i--){
反向+=字符串(nums)[i];
}
反向返回;
}
函数回文(num){
if(字符串(num).长度<2){
返回num+1
}
对于(变量i=num+1;;i++){
if(字符串(i)==反向(i)){
返回i
}
}
}

log(Palindrome(23))
您不需要反转,因为需要O(n),如果您只迭代并检查
num
长度的一半,则可以提高性能

在这里,我从开始到结束匹配数字

所以,第一个数字应该匹配最后一个,第二个应该匹配第二个,依此类推。我认为任何这样的匹配失败的数字都不是回文

这样,您只需将数字长度增加到一半(转换为字符串后)

函数回文(num){
num=”“+num;
对于(变量i=0;i控制台日志(nextPalindrome(1001))我在这里使用了while循环。您可以尝试以下方法:

function reverse(nums) {
  var reverse = "";
  for (var i = String(nums).length - 1; i >= 0; i--) {
    reverse += String(nums)[i];
  }
  return reverse;
}

function Palindrome(num) {
  if (String(num).length < 2) {
    return num + 1;
  }
var i=num;
  while(i!=0) {
    if (String(i++) === reverse(num)) {
      return --i;

    }
    num=i;
  }
}

console.log(Palindrome(23));
功能反转(nums){
var reverse=“”;
对于(var i=String(nums).长度-1;i>=0;i--){
反向+=字符串(nums)[i];
}
反向返回;
}
函数回文(num){
if(字符串(num).长度<2){
返回num+1;
}
var i=num;
而(i!=0){
if(字符串(i++)==reverse(num)){
return--i;
}
num=i;
}
}
console.log(回文(23));

当我运行代码段时,它返回
未定义的
。这听起来像是一个家庭作业/面试问题,也许你应该先解释(或写下)你寻找下一个数字回文(11,22,33,…)的算法,然后我们可以检查它在哪里分解。OP正在尝试在
num
之后找到下一个回文,也就是说,如果
num==23
,那么函数应该找到并返回
33
@drewreeseahh,完全忽略了该部分。谢谢,我更新了。谢谢你的回答。。现在问题解决了!