编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
譬如:输入:"flower","flow","flight",输出"fl",如果没有相同前缀输出“”。
方法一:扫描法(可以横向也可以纵向)
我的代码:
public class LongestCommonPrefix {
public String longestCommonPrefix(String[] strs) {
if(strs.length == 0)return "";
StringBuffer sb = new StringBuffer();
int len = minLength(strs);
boolean common = true;
for(int i = 0;i<len;i++) {
char t = strs[0].charAt(i);
for(int j = 0;j<strs.length;j++) {
if(t != strs[j].charAt(i)) {
common = false;
break;
}
}
if (common) {
sb.append(t);
}else {
break;
}
}
return String.valueOf(sb);
}
private int minLength(String[] strs) {
int min = Integer.MAX_VALUE;
for(int i = 0;i<strs.length;i++) {
min = Math.min(min, strs[i].length());
}
return min;
}
public static void main(String[] args) {
System.out.println(new LongestCommonPrefix().longestCommonPrefix(new String[] {"flower","flow","flight"}));
}
}
方法二:使用字典树。