【问题标题】:isPalindrome - how comparison is being executed in `else if (str.length===2) return str[0]===str[1] `?isPalindrome - 如何在 `else if (str.length===2) return str[0]===str[1] `中执行比较?
【发布时间】:2022-10-01 03:02:47
【问题描述】:

我了解第三个条件但不了解第二个

在第二个条件 - 如果 \"str\" 的长度是 2 (意味着它有 2 个字符)然后返回 \"str[0] === str[1]\" 但是如果最后两个字符是不同的 \ "c\" \"g\" 也许?

return str[0] === str[1] 中如何进行比较?比较是否必须在 if() 语句中,因为 if() 语句返回 true ?

但是,这一行 return str[0] === str[1] 超出了 if() 语句的范围,返回 true 或 false

function isPalindrome(str) {
  // 1st Conditional
  if (str.length === 1) return true 

  // 2nd Conditional
  else if (str.length===2) return str[0]===str[1] 
  
  // 3rd Conditional
  else if (str[0] === str.slice(-1)) {
    return isPalindrome(str.slice(1,-1))
  }

  return false
}
  • return str[0]===str[1] 如果值匹配,则得到 return true,否则得到 return false

标签: javascript algorithm recursion palindrome


【解决方案1】:

return "str[0] === str[1]",但是如果最后两个字符不同“c”“g”呢?

该语句将返回一个布尔值。该布尔值由str[0] === str[1] 确定。这是一个错误或正确的比较。在示例“cg”中,比较结果为假,因此return 语句将使函数返回值false

return str[0] === str[1] 中如何进行比较?

它像在任何其他上下文中一样执行。表达式为str[0] === str[1],该评估的结果由return 语句返回。

比较是否必须在 if() 语句内,因为 if() 语句返回 true ?

return 只应在前面的if 语句为真时执行,即return 只应在字符串长度为真时执行。

但是,这一行 return str[0] === str[1] 超出了 if() 语句的范围,返回 true 或 false

那句话是不是if 语句的范围之外。这是一个仅在if 条件为真时执行的语句。

如果有帮助,我们可以重写 if (str.length===2) return str[0]===str[1] 如下:

if (str.length===2) {
    let isPalindromeOfTwo = str[0]===str[1];
    return isPalindromeOfTwo;
}

甚至(但这是一种反模式):

if (str.length===2) {
    if (str[0]===str[1]) {
        return true; // It is a palindrome of 2
    } else {
        return false; // Not a palindrome
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多