Q:
题目链接:Longest Common Prefix
先看题目要求:
Write a function to find the longest common prefix string amongst an array of strings.
有一个字符串数组,写一个函数找出最长的通用字符串前缀。比如输入[‘abc’,’abd’,’a’,’ac’],输出’a’。
分析
开始在想有没有O(n)的方法,一直没想出来,上网找也没找到,所以就按照普通思路写了。首先,肯定要写个循环遍历数组中的字符串,先把第一个字符串当做目标字符串(通用前缀),然后用后面的字串和第一个比较(比较相同下标的字母),如果比较到的字符全都一样,则第一个字符串就是要找的结果;如果又不一样,则不一样的那个字母前面的子串就是结果,同理,然后再进行剩下的比较。看代码:
A:
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
if(strs === []){
return ''
}
var result = strs[0]||''//默认为第一个字符串;
var maxlength = 0;
for(var i = 0;i < strs.length;i++){
//校验前缀
for(var j = 0;j < result.length;j++){
if(result[j] !== strs[i][j]){
result = result.slice(0,j)
break;
}
}
}
return result
};
时间复杂度为O(m*n),n为数组的的元素个数,m为第一个元素的length。