【问题标题】:Assistance with javascript palindrome协助处理 javascript 回文
【发布时间】:2020-11-09 02:10:57
【问题描述】:

我正在尝试使用 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));

【问题讨论】:

  • 对于最后一点,您可以使用return a == reversed;。如果返回值需要专门为字符串,则可以使用return (a == reversed).toString();

标签: javascript palindrome


【解决方案1】:

forpalindrome 内循环时,您已经从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));

【讨论】:

    【解决方案2】:

    你的循环:

    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];   
         }
    

    您也可以使用 reverse 方法来反转字符串,如下所示:

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

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

    【讨论】:

      【解决方案3】:

      此代码将第一个字符与最后一个字符进行比较,然后将第二个字符与倒数第二个字符进行比较,直到用完字符为止。

      一旦发现不等式,它就会返回 false,因为没有理由继续比较。

      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);
      &lt;output id="output"&gt;&lt;/output&gt;

      【讨论】:

        猜你喜欢
        • 2021-11-10
        • 2011-02-21
        • 2022-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多