题目:最长公共前缀
leetcode链接:最长公共前缀
说明:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。
理解:
1、有一个字符串数组,找出字符串数组中各个元素共同的连续字符(公共前缀)
2、若数组元素不存在公共的前缀则返回字符串 ""
思路:
1、indexOf: 先取第一个字符串当做他们的公共前缀,然后找出他和第2个字符串的公共前缀,然后再用这个找出的公共前缀分别和第3个,第4个,第n个进行判断。
2、startsWith
3、reduce API
题解:
方案一:indexOf
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
//边界条件判断
if (strs == null || !strs.length) return "";
//默认第一个字符串是他们的公共前缀
let pre = strs[0];
let i = 1;
while (i < strs.length) {
//不断的截取
while (strs[i].indexOf(pre) != 0) {
pre = pre.substring(0, pre.length - 1);
}
i++;
}
return pre;
};
方案二:startsWith
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
let pre = strs[0];
for (let str of strs) {
while (!str.startsWith(pre)) {
pre = pre.substring(0, pre.length - 1);
if (!pre) {
return pre;
}
}
}
return pre;
};
方案三:reduce Api
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
return strs.reduce((prefix,cur) => {
while(cur.indexOf(prefix) != 0){
prefix = prefix.slice(0, prefix.length-1)
}
return prefix
})
};
总结:
本篇提供了几种对最长公共前缀的实现,从执行结果来看,效率看着还行~