题目
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
如:[“flower”,“flow”,“flight”]返回 ‘fl’
一、方案一
public String longestCommonPrefix(String[] strs) {
String s = "";
if(strs.length==0) return s;
if(strs.length==1) return strs[0];
for (int i=0;i<strs[0].length();i++) {
int j=1;
boolean flag = false;
while (j < strs.length) {
if (i < strs[j].length() && strs[j].substring(i,i+1).equals(strs[0].substring(i,i+1))) {
flag = true;
j++;
} else {
flag = false;
break;
}
}
if(flag){
s+=strs[0].substring(i,i+1);
}else {
break;
}
}
return s;
}
二、方案二
public String longest() {
String[] strs = new String[]{"flower","flow","flight"};
if (strs.length==0) return "";
if (strs.length==1) return strs[0];
String prefix = strs[0];
for (int i=1;i<strs.length;i++) {
prefix = longest(prefix, strs[i]);
if (prefix.length() == 0) {
break;
}
}
return prefix;
}
private String longest(String str1,String str2) {
int index = 0;
while (Math.min(str1.length(),str2.length())>index && str1.charAt(index) == str2.charAt(index)) {
index++;
}
return str1.substring(0,index);
}
提示: 方案二比方案一耗时少且耗内存少
620

被折叠的 条评论
为什么被折叠?



