3、简易题14- 最长公共前缀
① 题目要求
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
官方给的实例:
plain
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
② 思路分析
- 分析:
取出最长公共前缀,那我们就可以直接拿第一个出来,然后转为数组,然后拿后面的每一个去跟这个第一项作比较,看里面的字符是否相同,如果后面的字符创长度比这个第一项还短,那就可以直接忽略不计。比这个长的话,游戏继续。
具体实现:
数组为空,返回’’
循环里面的字符串每个的长度 i
循环外层数组长度 s
判断flower 下的f是否和flow 下的f相同
相同=> 返回l拼接到第一个下面依次
不相同=> 返回原本的
plain
//
var longestCommonPrefix = function(strs) {
if(strs.length==0){
return ''
};
var allstring = "";
for (var s = 0; s < strs[0].length; s++) {
var dataA = strs[0][s];
for (var m = 1; m < strs.length; m++) {
if ( s >= strs[m].length || strs[m][s] !== strs[0][s]) {
return allstring;
}
allstring += strs[0][s];
}
}
return allstring
};
输出以后发现,虽然貌似没啥毛病,但是就是除了问题。
js
ffllo strsall
完善我们的代码以后:
js
var strs = ["flower", "flow", "flight"],flower = ['f', 'l'];
function strscommon(strs){
if(strs.length==0){
return ''
};
var allstring = "";
for (var s = 0; s < strs[0].length; s++) {
var dataA = strs[0][s];
for (var m = 1; m < strs.length; m++) {
if ( s >= strs[m].length || strs[m][s] !== strs[0][s]) {
return allstring;
}
}
allstring += strs[0][s];
}
}
console.log(strscommon(strs),'strsall');
查看我们的输出结果:
js
fl strsall
解题完成!