本文正在参与掘金团队号上线活动,点击 查看大厂春招职位
一、题目描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
提示:
- 0 <= strs.length <= 200
- 0 <= strs[i].length <= 200
- strs[i] 仅由小写英文字母组成
二、思路分析:
递归循环遍历查找最长公共前缀。
三、AC代码
let findCom = function(strs, ind) {
if(!strs[0]) return false;
let start = strs[0][ind];
for(let i = 0; i < strs.length; i ++) {
if(!start || !strs[i][ind] || (strs[i][ind] != start)) {
return false;
}
}
return start;
}
var longestCommonPrefix = function(strs) {
let com = '';
let ind = 0;
function digui() {
let str = findCom(strs, ind);
if (!str) {
return com;
} else {
com += str;
ind ++;
digui(ind);
}
}
digui();
return com;
};
执行结果
执行结果:通过
执行用时:100 ms, 在所有 JavaScript 提交中击败了33.52%的用户
内存消耗:40.7 MB, 在所有 JavaScript 提交中击败了11.16%的用户
四、总结:
- 程序调用自身的编程技巧称为递归
- 递归要做循环退出的条件,否则就是死循环