【问题标题】:leetcode 14. Longest Common Prefix Javascriptleetcode 14. 最长公共前缀 Javascript
【发布时间】:2020-12-05 07:56:30
【问题描述】:

[leetcode 问题 14][1] 不明白为什么输出因最长公共前缀而被拒绝。由于问题没有粘贴代码提交是我误读了问题。

Wrong Answer

Details 

Input

["reflower","flow","flight"]

Output

"fl"

Expected

""

从网站复制的描述:

编写一个函数来查找字符串数组中最长的公共前缀字符串。

如果没有公共前缀,则返回一个空字符串“”。

示例 1:

Input: strs = ["flower","flow","flight"]
Output: "fl"

示例 2:

Input: strs = ["dog","racecar","car"]
Output: ""

说明:输入字符串之间没有共同的前缀。

约束:

0 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] consists of only lower-case English letters.

【问题讨论】:

    标签: javascript


    【解决方案1】:

    在失败的测试用例中,输出“fl”被拒绝,因为其中一个字符串不是以“fl”开头。

    常用前缀含义的误解可能是以下两个术语之一:

    • 前缀:子字符串必须出现在字符串的开头——在所有其他字符之前(“pre”),而不是字符串的结尾(“后缀” ) 或其他任何地方(“子字符串”)。在您失败的测试用例中,第三个单词有“fl”,但“fl”不会出现在字符串的开头,所以它是无关紧要的。
    • common所有 输入字符串必须有该前缀,而不仅仅是几个。在失败的测试用例中,有两个以“flow”开头的单词,但由于第三个单词没有,所以不算common

    【讨论】:

    • 就是这样,谢谢!我误解了这个问题。
    【解决方案2】:

    问题来了:

    ...找到最长的公共前缀字符串...

    你需要找到最长的共同前缀——也就是每个单词开头的字符串。

    在你的情况下,输入是["reflower","flow","flight"]

    虽然 flowflight 具有相同的前缀 - flreflower 没有相同的前缀(因为它不是以 fl 开头,而是以 re 开头),并且作为结果整个 3 个单词没有公共前缀,所以输出应该是 ""

    【讨论】:

      【解决方案3】:
      const longestCommonPrefix = function(strs) {
        // const strs = ["flower","flow","flight"];
        // console.log(strs);
      
        if (!strs.length) return "";
      
        for (let i = 0; i <= strs[0]; i++) {
          if (!strs.every((string) => string[i] === strs[0][i])) {
            return strs[0].slice(0, i);
          }
        }
        
        return strs[0].slice();
      };
      

      【讨论】:

      • 欢迎来到 StackOverflow。请随时查看this link 以获得任何回答问题的支持/指导。
      猜你喜欢
      • 2022-11-22
      • 2020-06-06
      • 2021-10-12
      • 2021-09-11
      • 1970-01-01
      • 2018-09-30
      • 2013-04-14
      • 2012-02-01
      • 2020-07-05
      相关资源
      最近更新 更多