leetcode14–最长公共前缀Java
比较常用的方法第一个是横向比较的暴力匹配
另一个是纵向的每个字符串比较
另外比较优良的算法是分治算法和二分查找(本人算法小白,之后会补充)
此题我用的方法是横向比较
class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs == null || strs.length == 0){
return ""; //字符串为空或没有数组
}
String prefix = strs[0];//暂时假定第一个字符串为公共前缀
for(int i=1;i<strs.length;i++){
prefix = longestCommonPrefix1(prefix,strs[i]);//找到公共前缀
if(prefix.length() == 0){
break;
}
}
return prefix;
}
public String longestCommonPrefix1(String str1,String str2){
int length;
if(str1.length() < str2.length()){ //找到最小长度
length = str1.length();
}else{
length = str2.length();
}
for(int i=0;i<length;i++){
if(str1.charAt(i) != str2.charAt(i)){
length = i;
break;
}
}
return str1.substring(0,length);
}
}
暴力的方法内存占用较高,之后会补充二分查找和分治