解题思路
该题目根据官方题解,有四种方式。
横向扫描
就是将先求出第一个,第二个的字符的公共的前缀,然后将结果与第三个比较,求出结果与第四项比较,类似
纵向扫描
选取第一项作为基准。将第一项中的字符元素与strs中[1,n]项进行比较。当strs的第j项中的第i元素不存在或者该元素不等于strs中第0项中的第i个元素,则退出
代码
const commonPrefixItem1 = (s1,s2)=>{
let res = '';
let n = Math.min(s1.length,s2.length);
for(let i = 0;i<n;i++){
if(s1[i] === s2[i]){
res += s1[i]
}else{
break;
}
}
return res;
}
const longestCommonPrefix1 = (strs)=>{
const len = strs.length;
let res = strs[0];
for(let i = 1;i<len;i++){
res = commonPrefixItem1(res,strs[i]);
if(res.length === 0){
return '';
}
}
return res;
}
var longestCommonPrefix = function(strs) {
let res = '';
if(strs.length === 0) return res;
const n = strs[0].length,m = strs.length;
for(let i = 0;i<n;i++){
const c = strs[0][i];
for(let j = 1;j<m;j++){
if(!strs[j][i] || strs[j][i] !== c){
return strs[0].slice(0,i)
}
}
}
return strs[0];
};