协助 javascript 回文

Assistance with javascript palindrome

我正在尝试使用 JavaScript 中的 for 循环来解决回文问题(我的代码在下面)。

我不知道我做错了什么。如果有人可以请更正和解释,将不胜感激。我对编码还很陌生。

var word = window.prompt("Enter a word");
function palindrome(a) {
  var reversed = '';
  for (i = 0; i <= a.length; i++) {
    reversed = reversed + a[a.length - 1 - i];
  }
  if (a == reversed) {
    return "true";
  } else {
    return "false";
  }
}
document.write(palindrome(word));

palindrome 内的 for 循环中,您从 0 ~ a.length 循环并且字符串中 length 索引上的项目是 undefined 所以 reversed 永远是 undefined.

您需要从 0 ~ a.length - 1 开始循环,如下所示。

var word = window.prompt("Enter a word");
function palindrome(a) {
  var reversed = '';
  for (i = 0; i < a.length; i++) {
    reversed = reversed + a[a.length - 1 - i];
  }
  console.log(reversed);
  if (a == reversed) {
    return "true";
  } else {
    return "false";
  }
}
document.write(palindrome(word));

您可以简单地反转字符串,如下所示。

var word = window.prompt("Enter a word");
function palindrome(a) {
  const reversed = a.split('').reverse().join('');
  if (a == reversed) {
    return "true";
  } else {
    return "false";
  }
}
document.write(palindrome(word));

此代码比较第一个字符和最后一个字符,然后继续比较第二个字符和倒数第二个字符,直到用完所有字符。

一旦发现不等式,它就returns错误,因为没有理由继续比较。

let word = window.prompt("Enter a word");
const palindrome = a => {
  let last = a.length - 1;
  // loop, comparing the values until you find something that doesn't match
  for (let first = 0; first <= last; first++, last--) {
    if (a[first] !== a[last]) {
      return "false";
    }
  }
  // everything matched
  return "true";
}
document.getElementById("output").textContent = palindrome(word);
<output id="output"></output>

你的循环:

for (i = 0; i <= a.length; i++) {
    reversed = reversed + a[a.length - 1 - i];
  }

您只需要删除 -1 并使用 1 开始循环,因为当您到达迭代结束时,您将拥有单词的长度 -1,这将尝试访问负数位置。

更改后:

 for (let i = 1; i <= a.length; i++) {
       // you can use reversed += a[a.length - i] instead of;
       reversed = reversed + a[a.length - i];   
     }

您也可以使用这样的反转方法来反转字符串:

 reversed = a.split('').reverse().join(''); 

最后,如果您想验证数据句子,您需要删除空格并将其转换为小写或大写(通常转换为小写),因为比较区分大小写(“Party trap”!=“part ytraP”)。