求一个字符串数组的最长公共前缀最直接的方法就是:取出第一个字符串转换为字符数组,对比每个字符串相应位数的字符。
具体代码如下:
class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs==null)return null;
if(strs.length==0)return "";
if(strs.length==1) return strs[0];
char[] ch=strs[0].toCharArray();
if(ch.length==0)return "";
int index = -1;
boolean check = true;
for(int i=0;i<ch.length;i++){
for(int j=1;j<strs.length;j++){
if(i>=strs[j].length()||ch[i]!=strs[j].charAt(i)){
check=false;
break;
}
}
if(!check) {
index=i;
break;
}
}
if(check)return strs[0];
if(index==-1)return "";
return strs[0].substring(0,index);
}
}
这样子按顺序对比,效率比较低,我们可以使用二分法对上面的代码进行改良。
题目来源:leetcode