题解 | #最长公共前缀#
最长公共前缀
http://www.nowcoder.com/practice/28eb3175488f4434a4a6207f6f484f47
分治法
public String longestCommonPrefix (String[] strs) {
// write code here
if (strs == null || strs.length == 0){
return "";
}
return longestCommonPrefix(strs,0,strs.length-1);
}
private String longestCommonPrefix (String[] strs,int start,int end) {
// write code here
if (start == end){
return strs[start];
}else {
int mid = (start + end) / 2;
String leftCommonPrefix = longestCommonPrefix(strs,start,mid);
String rightCommonPrefix = longestCommonPrefix(strs,mid + 1,end);
return CommonPrefix(leftCommonPrefix,rightCommonPrefix);
}
}
private String CommonPrefix(String leftCommonPrefix, String rightCommonPrefix) {
int minlen = Math.min(leftCommonPrefix.length(),rightCommonPrefix.length());
for (int i = 0; i < minlen; i++) {
if (leftCommonPrefix.charAt(i) != rightCommonPrefix.charAt(i)){
return leftCommonPrefix.substring(0,i);
}
}
return leftCommonPrefix.substring(0,minlen);
}
查看10道真题和解析
美的集团公司福利 727人发布