leetcode14.最长公共前缀
第一种解法:对字符串数组中的每一列字符同步对比
if(strs == null||strs.length == 0){
return "";
}
for(int i=0;i<strs[0].length();i++){
char c = strs[0].charAt(i);
for(int j=1;j<strs.length;j++){
if(i>=strs[j].length()||strs[j].charAt(i) != c){
return strs[0].substring(0,i);
}
}
}
return strs[0];
第二种解法,分治!
class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs == null||strs.length == 0){
return "";
}
//分治
return partion(strs,0,strs.length-1);
}
String partion(String[] strs,int start,int end){
if(start == end){//边界条件为一个数组时返回该数组
return strs[start];
}else{
int mid = (start+end)/2;//注意此处不是strs.length
String left = partion(strs,start,mid);
String right = partion(strs,mid+1,end);
return merge(left,right);
}
}
String merge(String left,String right){
for(int i=0;i<left.length();i++){
char c = left.charAt(i);
if(i>=right.length()||right.charAt(i) != c){
return left.substring(0,i);
}
}
return left;
}
}