1.题目描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
eg:
输入: ["flower","flow","flight"] 输出: "fl"
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
2.上代码(理解代码:看注释部分!)
var longestCommonPrefix = function(strs) {
if(strs.length<1) //首先,这个部分是一个细节部分,我们要判断当前字符串数组个数是否小于1,如果是的话,说明其为空,所以我们要返回""
{
return "";
}
var min = strs[0].length;
var index = 0;
var myStr = "";
var outFlag = false;
for(let i = 0;i<strs.length;i++)//这个是获取其数组中最小长度的。这样会减少后面的计算量
{
if(strs[i].length<min)
{
min = strs[i].length;
index =i;
}
}
var sum = 0;//这个是计数,看从最小长度开始,每一个字符开始比较,如果其字符都相同的话,其sum = strs.length-1;
for(let j = 0;j<min;j++)
{
var char =strs[0].split('')[j];//获取最少长度的字符。
console.log("char is:"+char);
for(let i = 1;i<strs.length;i++)
{
var char_test = strs[i].split('')[j];
if(char===char_test)//如果相等,则添加sum++
{
sum = sum +1;
}else{//如果不相等的话,就可以直接退出了
outFlag = true;//这个标准位是为了最上层的循环进行退出的
break;
}
}
if(outFlag)//如果出现不等的情况,直接退出
{
break;
}
if(sum===strs.length-1)//如果每个字符串对应的位置都相同的话,则添加到myStr,最后,返回myStr;
{
myStr = myStr+char;
}
sum = 0;//这个每次都要清零
}
return myStr;
};
var a = ["dog","racecar","car"];//这个每次都要清零
var c = longestCommonPrefix(a);
console.log("result:"+c);