微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

谁能帮助我了解为什么我的leetcode问题出现此运行时错误?最长前缀

如何解决谁能帮助我了解为什么我的leetcode问题出现此运行时错误?最长前缀

我正在为即将到来的采访练习Leetcode问题,我在做最长的前缀 问题,当我使用预设运行代码时,我会通过所有测试,但是当提交代码通过时,会出现运行时错误。这是我在下面编写的代码

/**
 * @param {string[]} strs
 * @return {string}
 */
var longestCommonPrefix = function(strs) {
    let splitWords = [];
    let commonPrefix =[];
    strs.forEach((word,i) =>{
        splitWords[i] = word.split('');
    })
    if( splitWords !== undefined || splitWords.length > 0){
    for(i=0; i < splitWords[0].length; i ++){
        if(splitWords[0][i] ==  splitWords[1][i] &&  splitWords[0][i] == splitWords[2][i]){
        
        commonPrefix.push(splitWords[0][i])
            console.log(commonPrefix)
         }else{
           break;
         }
        }
       }
  return (commonPrefix === undefined || commonPrefix.length == 0 ? commonPrefix = "" : commonPrefix.join(''))
};

这是我提交时遇到的错误

Line 12 in solution.js
    for(i=0; i < splitWords[0].length; i ++){
                               ^
TypeError: Cannot read property 'length' of undefined
    Line 12: Char 32 in solution.js (longestCommonPrefix)
    Line 33: Char 19 in solution.js (Object.<anonymous>)
    Line 16: Char 8 in runner.js (Object.runner)
    Line 24: Char 26 in solution.js (Object.<anonymous>)
    Line 1200: Char 30 in loader.js (Module._compile)
    Line 1220: Char 10 in loader.js (Object.Module._extensions..js)
    Line 1049: Char 32 in loader.js (Module.load)
    Line 937: Char 14 in loader.js (Function.Module._load)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    Line 17: Char 47 in run_main_module.js

同样,当我通过测试运行它时,它可以正常工作/通过;当我提交它时,代码将失败。我不确定算法也要尝试输入什么,但我认为这是一个空数组?

我知道我可以查找答案,但是我试图不查找就完全解决问题。

//“上次执行的输入[]”

解决方法

如果查看Leetcode问题的约束条件,您会发现strs数组中有一个空字符串的可能性。

0 <= strs[i].length <= 200

例如,您可以拥有Input: strs = ["","flow","flight"]

使用您遍历strs数组的方式,拆分每个字符串并将它们添加到splitWords数组将导致以下结果:

0: []
1: (5) ["f","l","o","w"]
2: (5) ["f","i","g","h","t"]

不检查空字符串将导致for循环尝试访问未定义的空数组第一个值的length

,
  • 输入参数为[]splitWords初始值为[]
  • 然后splitWords !== undefined是真的,
  • splitWords[0].length的意思是([])[0].length,显然([])[0]是未定义的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?