【发布时间】:2021-10-12 14:22:35
【问题描述】:
我正在尝试解决 Leet Code 挑战14. Longest Common Prefix:
编写一个函数来查找字符串数组中最长的公共前缀字符串。
如果没有公共前缀,则返回空字符串
""。示例 1:
Input: strs = ["flower","flow","flight"] Output: "fl"示例 2:
Input: strs = ["dog","racecar","car"] Output: ""说明:输入字符串之间没有共同的前缀。
约束:
1 <= strs.length <= 2000 <= strs[i].length <= 200strs[i]仅由小写英文字母组成。
我的解决方案:
let strs = ["flower", "flow", "flight"];
var longestCommonPrefix = function (strs) {
for (let i = 0; i < strs.length; i++) {
for (let j = 0; j < strs[i].length; j++) {
// console.log(strs[i+2][j]);
if (strs[i][j] == strs[i + 1][j] && strs[i + 1][j] ==strs[i + 2][j]) {
return (strs[i][j]);
} else {
return "0";
}
}
}
};
console.log(longestCommonPrefix(strs));
输出:f
如何遍历每个字符并检查它是否相同然后继续下一步,如果失败则返回最长的公共前缀?
【问题讨论】:
-
如果您不知道哪里出了问题:您的第一个行动方案是找出哪里出了问题。您可能无法弄清楚如何修复它,但是您确实需要投入时间和精力来调试自己的代码:使用少量作为输入并放置一些控制台登录您的循环,甚至更好,但在其中使用
debugger语句并使用浏览器的调试器在观察变量的同时单步执行您的代码。当您知道每次迭代应该发生什么时,您可以很快发现问题所在。另外,在 JS 注释上:不要使用var x = function...,只需声明一个函数。 -
我已经完成了你提到的这些事情,也得到了为什么我得到那个输出的答案。问题是如何检查每个字符并返回最长的公共前缀?
-
然后你会想update your post 解释你发现了什么,你发现哪里出了问题,以及你已经检查过的有希望(但没有成功)解决问题的地方。
标签: javascript arrays string for-loop if-statement