首页 > 解决方案 > 回文检查器 - for 循环的问题

问题描述

我正在学习 javaScript 并编写一个回文检查器来练习。它不起作用,通过使用打印语句,我将其范围缩小为我的 for 循环的问题。我不明白为什么它不起作用;谁能阐明一下?

function palindrome(str) {
  var newString = str.replace(/[^a-z0-9]/g, '').toLowerCase();
  console.log(newString)
  var forwardsArray = newString.split("");
  console.log(forwardsArray)
  var backwardsArray = forwardsArray.reverse();
  console.log(backwardsArray)
  for (var i = 0; i < backwardsArray.length; i++) {
    for (var j = 0; j < forwardsArray.length; j++) {
      console.log(backwardsArray[i])
      console.log(forwardsArray[i])
      if (forwardsArray[j] !== backwardsArray[i]) {
        return false;
      }
    }
    return true;
  }
}

标签: javascript

解决方案


当然,到现在为止,您已经发现自己想多了。

function palindrome(str) {
  const newString = str.replace(/[^a-z0-9]/g, '').toLowerCase();
  const reversed = newString.split('').reverse().join('');

  return newString === reversed;
}

palindrome("abba"); // true
palindrome("abcd"); // false

所以我离开了newString逻辑,但是在这样做之后,在一天结束的时候,你将采用相同的方法newString并拆分它,反转它并加入它,然后将它与它的原始字符串进行比较,在你的情况下,newString.

所以你直接比较reversed你的字符串,如果它们相等,那么它是一个回文,如果不是,那么它不是一个回文。


推荐阅读