大家好,我是魔笑,这道题没啥好说的,看看代码,解解闷呗,常规算法,暴力解法。
我们一起加油,对你有帮助请给一个素质三连
题目:
编写一个函数来查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串?"" 。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
代码:
public String longestCommonPrefix1(String[] strs) {
if(strs==null){
return "";
}
if(strs.length==1){
return strs[0];
}
//以strs的第一个元素为公共前缀
String commonPrefix=strs[0];
//公共前缀的长度
int commonLength=commonPrefix.length();
//遍历strs,从第二个元素开始和公共前缀作比较
for (int i = 1; i < strs.length; i++) {
int start=-1;
//求出最小长度的字符串,避免下标越界
int min = commonPrefix.length() < strs[i].length() ? commonPrefix.length() : strs[i].length();
//只需要遍历到不大于公共前缀的长度即可,后面就不需要遍历了
while (start+1<=commonLength && start+1 < min && strs[i].charAt(start+1)==commonPrefix.charAt(start+1)) {
start++;
}
if(start==-1){
return "";
}
//start的大小就是公共前缀的长度大小
commonLength=start;
}
return commonPrefix.substring(0, commonLength+1);
}
|