原题在这里。
老规矩,还是先简单翻译一下。
查找指定字符串数组每个元素的最长相同前缀。如果没有相同的前缀,那么返回””。
举个例子:
Input: ["flower","flow","flight"]
Output: "fl"
Input: ["dog","racecar","car"]
Output: ""
Explanation: There is no common prefix among the input strings.
注意:指定的字符串数组元素由小写a-z构成。
解题思路:
我们假设有这样一个游标p,p指向字符串数组arr的每个元素下标为p的字符。最开始,p从0开始,如果arr[0].chatAt(p) != arr[n].charAt[p],那么返回arr[0].substring(0,p),或者arr[n].length <= p,那么返回arr[n];否则的话,p+1,递归处理。代码如下:
function longest_common_prefix(str_array,pointer){
var target = str_array[0];
if(pointer >= target.length){
return target;
}
for (var i = 1; i < str_array.length; i++) {
var str = str_array[i]
if(pointer >= str.length){
return str.substring(0,pointer);
}else{
var target_char = target.charAt(pointer);
var current_char = str.charAt(pointer);
if(target_char != current_char){
return target.substring(0,pointer);
}
}
}
return longest_common_prefix(str_array,pointer+1);
}
var str_array = ["a","adecar","a"]
console.log(longest_common_prefix(str_array,0));