Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么在查找字符串列表中最长的公共前缀时会出现运行时错误?_Javascript_String_Algorithm - Fatal编程技术网

Javascript 为什么在查找字符串列表中最长的公共前缀时会出现运行时错误?

Javascript 为什么在查找字符串列表中最长的公共前缀时会出现运行时错误?,javascript,string,algorithm,Javascript,String,Algorithm,问题: 编写一个函数,在字符串数组中查找最长的公共前缀字符串 如果没有公共前缀,则返回空字符串“” 我的代码通过了测试用例,但是当我提交时,我得到一个运行时错误,说firstWord不可测试。我做错了什么 let longestCommonPrefix = function(strs) { let result = ''; let firstWord = strs[0]; let index = 0; for (let letter of firstWord) { fo

问题:

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

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

我的代码通过了测试用例,但是当我提交时,我得到一个运行时错误,说
firstWord
不可测试。我做错了什么

let longestCommonPrefix = function(strs) {
  let result = '';
  let firstWord = strs[0];
  let index = 0;

  for (let letter of firstWord) {
    for (let i = 1; i < strs.length; i++) {
      let comparisonWord = strs[i];
      var comparisonLetter = comparisonWord[index];
      if (comparisonLetter !== letter) {
        return result;
      }
    }
    index++;
    result += comparisonLetter;
  }
  return result;
};
let longestCommonPrefix=函数(strs){
让结果=“”;
设firstWord=strs[0];
设指数=0;
for(让第一个单词的字母){
for(设i=1;i
如果STR的长度为0,则将没有第一个字进行迭代


如果strs的长度为1,则结果将是strs中唯一存在的字符串

  var longestCommonPrefix = function(strs) {
        
      if(strs.length == 0)
          return "";
      
      if(strs.length == 1)
          return strs[0];
        
      let result = '';
      let firstWord = strs[0];
      let index = 0;
    
      for (let letter of firstWord) {
        for (let i = 1; i < strs.length; i++) {
          let comparisonWord = strs[i];
          var comparisonLetter = comparisonWord[index];
          if (comparisonLetter !== letter) {
            return result;
          }
        }
        index++;
        result += comparisonLetter;
      }
      return result;
    };
var longestCommonPrefix=函数(strs){
如果(strs.length==0)
返回“”;
如果(strs.length==1)
返回strs[0];
让结果=“”;
设firstWord=strs[0];
设指数=0;
for(让第一个单词的字母){
for(设i=1;i
如果STR的长度为0,则将没有第一个字进行迭代


如果strs的长度为1,则结果将是strs中唯一存在的字符串

  var longestCommonPrefix = function(strs) {
        
      if(strs.length == 0)
          return "";
      
      if(strs.length == 1)
          return strs[0];
        
      let result = '';
      let firstWord = strs[0];
      let index = 0;
    
      for (let letter of firstWord) {
        for (let i = 1; i < strs.length; i++) {
          let comparisonWord = strs[i];
          var comparisonLetter = comparisonWord[index];
          if (comparisonLetter !== letter) {
            return result;
          }
        }
        index++;
        result += comparisonLetter;
      }
      return result;
    };
var longestCommonPrefix=函数(strs){
如果(strs.length==0)
返回“”;
如果(strs.length==1)
返回strs[0];
让结果=“”;
设firstWord=strs[0];
设指数=0;
for(让第一个单词的字母){
for(设i=1;i
为了简化事情,我以功能性的方式制作了它。 此外,对数组的显式转换有助于
[…str]

function longestCommonPrefixOfPair(strA, strB) {
  if (strA.length === 0 || strB.length === 0) return '';
  if (strA.length > strB.length) return longestCommonPrefix(strB, strA);

  const pairs = toChars(strA).map((a, i) => [a, strB[i]]);
  const prefixLength = pairs.findIndex(([a, b]) => a !== b);
  return prefixLength >= 0 ? strA.slice(0, prefixLength) : strA;
}

function toChars(str) {
  return [...str];
}

const longestCommonPrefix = (strs) => strs.reduce(longestCommonPrefixOfPair);

console.log(["123456", "12345", "123456789", "123"].reduce(longestCommonPrefix)); // 123

为了简化事情,我用功能性的方式制作了它。 此外,对数组的显式转换有助于
[…str]

function longestCommonPrefixOfPair(strA, strB) {
  if (strA.length === 0 || strB.length === 0) return '';
  if (strA.length > strB.length) return longestCommonPrefix(strB, strA);

  const pairs = toChars(strA).map((a, i) => [a, strB[i]]);
  const prefixLength = pairs.findIndex(([a, b]) => a !== b);
  return prefixLength >= 0 ? strA.slice(0, prefixLength) : strA;
}

function toChars(str) {
  return [...str];
}

const longestCommonPrefix = (strs) => strs.reduce(longestCommonPrefixOfPair);

console.log(["123456", "12345", "123456789", "123"].reduce(longestCommonPrefix)); // 123

当strs的长度为0时,str[0]等于未定义,因此不迭代

var longestCommonPrefix = function(strs) {
  if(strs.length === 0) {
    return "";
  }

  let pre = "";
  let result = "";

  for (let i = 0; i < strs[0].length; i++) {
    pre = strs[0].slice(0, i+1)

    const filters = strs.filter(item => {
        return item.slice(0, i+1) === pre;
    });

    if (filters.length === strs.length) {
      result = pre;
    } else {
      return result;
    }
  }

  return result;
};
var longestCommonPrefix=函数(strs){
如果(strs.length==0){
返回“”;
}
let pre=“”;
让结果=”;
for(设i=0;i{
返回项。切片(0,i+1)==pre;
});
if(filters.length==strs.length){
结果=预处理;
}否则{
返回结果;
}
}
返回结果;
};

当str的长度为0时,str[0]等于未定义,因此不迭代

var longestCommonPrefix = function(strs) {
  if(strs.length === 0) {
    return "";
  }

  let pre = "";
  let result = "";

  for (let i = 0; i < strs[0].length; i++) {
    pre = strs[0].slice(0, i+1)

    const filters = strs.filter(item => {
        return item.slice(0, i+1) === pre;
    });

    if (filters.length === strs.length) {
      result = pre;
    } else {
      return result;
    }
  }

  return result;
};
var longestCommonPrefix=函数(strs){
如果(strs.length==0){
返回“”;
}
let pre=“”;
让结果=”;
for(设i=0;i{
返回项。切片(0,i+1)==pre;
});
if(filters.length==strs.length){
结果=预处理;
}否则{
返回结果;
}
}
返回结果;
};

出现此错误时,函数是否接收到
strs
的哪个值?出现此错误时,函数是否接收到
strs
的哪个值?