public String longestCommonPrefix(String[] strs) {//输入字符串数组
if (strs == null || strs.length == 0) return "";//输入空输出空串
return longestCommonPrefix(strs, 0 , strs.length - 1);//入口循环体
}
private String longestCommonPrefix(String[] strs, int l, int r) {
if (l == r) {
return strs[l];//先写归口 切分的最终状态 单个字符串公共前缀是自身
}
else {
int mid = (l + r)/2;//无限切分 最终切片为单个字符串 先切的后合并
String lcpLeft = longestCommonPrefix(strs, l , mid);
String lcpRight = longestCommonPrefix(strs, mid + 1,r);
return commonPrefix(lcpLeft, lcpRight);//切成两块 永远执行两个字符串的合并
}
}
String commonPrefix(String left,String right) {
int min = Math.min(left.length(), right.length());
for (int i = 0; i < min; i++) {
if ( left.charAt(i) != right.charAt(i) )
return left.substring(0, i);
}
return left.substring(0, min);
}
分治算法——求字符串公共开头 20200428
最新推荐文章于 2022-07-20 16:37:35 发布