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
的哪个值?