题目描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
解题思路:
第一种就是纵向比对,当比较到当前位置字符不全相等时就可以返回当前位置前当字符串。
第二种是二分查找,二分的条件是当前长度的前缀是否都相同。
第三种是先排序,然后纵向比较第一个和最后一个字符串的最长前缀。
总的来说第一种和第三种复杂度差不多,第二种复杂度较大。
Java代码:
class Solution {
public String longestCommonPrefix(String[] strs) {
int len = strs.length;
if(len == 0) return "";
int mi = 2000000000;
for(int i = 0; i < len; i++) {
mi = Math.min(mi,strs[i].length());
}
String ans = "";
for(int i = 0; i < mi; i++) {
for(int j = 0; j < len; j++) {
if(strs[j].charAt(i) != strs[0].charAt(i)) {
return ans;
}
}
ans += strs[0].charAt(i);
}
return ans;
}
}