编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
String[] sarr = {"abcd","abcde","abc"};如字符串数组的公共前缀就是“abc”
public static String longestCommonPrefix(String[] strs) {
String res = "";
//如果长度为0,就没有公共前缀字符串,就返回“”
if (strs.length==0){
return "";
}
//如果长度为1,公共前缀字符串就是这个数组第一个
if (strs.length==1){
return strs[0];
}
//如果数组大于等于两个子串,先获取前连个比较怕公共前缀,如果公共前缀是空则返回。
res = compare(strs[0],strs[1]);
if ("".equals(res)){
return res;
}
//现在用获取到的前缀,去与剩余的区比较
for (int i = 2;i<strs.length;i++){
res = compare(res,strs[i]);
if ("".equals(res)){
//如果在这里为空,直接返回
return "";
}
}
return res;
}
private static String compare(String str, String str1) {
String res = "";
int num = Math.min(str.length(),str1.length());
for (int i = num;i>0;i--){
String s = str.substring(0,i);
if (s.equals(str1.substring(0,i))){
return s;
}
}
return res;
}