前言
主要记录LeetCode刷题的过程,记录一下自己或者网上比较好的解题思路。
1、题目
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
题目地址
示例1:
输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”
示例2:
输入:strs = [“dog”,“racecar”,“car”]
输出:“”
解释:输入不存在公共前缀。
2、解题方法
主要要注意一点,就是这个公共前缀一定是要连贯在一起的。 自己没有思路,分享一下官方的解题方法。
2.1、横向扫描
主要用到递归的方法。
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
if(strs === null || strs.length === 0){
return '';
}
let prefix = strs[0];
const count = strs.length;
for(let i =1;i<count;i++){
prefix = longestCommonPrefix1(prefix,strs[i]);
if(prefix.length ===0){
break;
}
}
return prefix;
};
var longestCommonPrefix1 = function(str1,str2){
let len = Math.min(str1.length,str2.length);
let index = 0;
while(index<len && str1.charAt(index) === str2.charAt(index)){
index++;
}
return str1.substring(0,index)
}