分治法,l, mid, r 分爲 (l, mid) 和 (mid+1, r)
class Solution {
public String longestCommonPrefix(String[] strs) {
String result = "";
if (strs == null || strs.length == 0) {
return result;
}
return prefix(strs, 0, strs.length - 1);
}
private String prefix(String[] strs, int left, int right) {
if (strs == null || strs.length == 0) {
return "";
}
if (left == right) {
return strs[left];
}
int mid = left + (right - left) / 2;
return commonPrefix(prefix(strs, left, mid), prefix(strs, mid+1, right));
}
private String commonPrefix(String left, String right) {
if (left == null || left.length() == 0 || right == null || right.length() == 0) {
return "";
}
int minLength = left.length() < right.length() ? left.length() : right.length();
for (int i=0; i<minLength; i++) {
if (left.charAt(i) != right.charAt(i)) {
if (i == 0) {
return "";
}
return left.substring(0, i);
}
}
return left.substring(0, minLength);
}
}