刷题第一天的第一道简单题,由于本人是前端开发,遂采用js进行题目解答。
我的思路是,首先找到strs中长度最短的那个字符串作为查询的关键字,然后由长到短遍历该元素,使用indexOf是否为0检测该元素是否包含且位于其他元素的下表0位,若通过,则直接返回截取的字符串部分,反之则进行下一轮循环。
代码具体如下
var longestCommonPrefix = function(strs) {
// 令最短字符串的下标为0
let minIndex = 0
for(let i = strs.length - 1; i > 0; i--){
// 寻找长度最短的字符串
minIndex = strs[i].length < strs[minIndex].length ? i : minIndex
}
for(let i = strs[minIndex].length; i >= 0; i--){
let flag = true; // 是否找到公共前缀的标识
for(let j = 0; j < strs.length ; j++){
// 若仍一元素不符合条件直接进行下一轮循环
if(strs[j].indexOf(strs[minIndex].substr(0,i))!== 0){
flag = false;
break;
}
}
if(flag){
// 符合条件直接返回该字符串
return strs[minIndex].substr(0,i)
}
}
return ""
};