Tip1:
以第一个字符串的每个字母strs[0].charAt(i)为基准,将后面的第j个字符串的字母strs[j].charAt(i)与第一个字符串对应位置字母进行比较。
class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs==null||strs.length==0){
return "";
}
int count=strs.length;
int length=strs[0].length();
for(int i=0;i<length;i++){
char ch=strs[0].charAt(i);
for(int j=1;j<count;j++){
if(i==strs[j].length()||strs[j].charAt(i)!=ch){
return strs[0].substring(0,i);
}
}
}
return strs[0];
}
}
Tip2:
先对字符串数组中的字符串排序,而后只考虑第一个和最后一个字符串。
取它们中的最小长度作为比较次数,然后依次比较每一个字母。
class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs.length == 0) return "";
Arrays.sort(strs);
String start = strs[0], end = strs[strs.length - 1];
int i, num = Math.min(start.length(), end.length());
for (i = 0; i < num && start.charAt(i) == end.charAt(i); i++);
return start.substring(0, i);
}
}