//我的方法
public String longestCommonPrefix(String[] strs) {
//如果字符串数组长度是0,则返回“”,如果数组长度是1,那么直接返回这一条String
if(strs.length==0){
return "";
}else if(strs.length==1){
return strs[0];
}
String s = "";
//比较strs[0]的从第0位开始,每次取出一个字符比较,若数组中所有这个位的字符都相等,则加入公共字符串s,进行下个循环
for(int i=0; i<strs[0].length(); i++){
for(int j=1; j<strs.length; j++){
//如果遍历指针到达某个元素元素末尾或者某个元素该位匹配不想等,则返回s
if((i>=strs[j].length()) || (strs[0].charAt(i) != strs[j].charAt(i)))
return s;
}
s = s+strs[0].charAt(i);
}
return s;
}
//leetcode的方法
public String longestCommonPrefix1(String[] strs) {
if(strs == null || strs.length == 0) return "";
String pre = strs[0];
int i = 1;
while(i < strs.length){
//拿第一个做模板,匹配到数组中第一个元素的最长公共前缀字符串,然后以这个为模板,以此类推匹配下边所有的元素,最后返回最终模板
//indexOf是检测子串并返回子串起始位置的函数
while(strs[i].indexOf(pre) != 0)
//如果pre不是子串,就去掉pre末尾一位重新比较,直到是子串或者pre长度0时就会跳出本次循环去匹配下一轮外循环
pre = pre.substring(0,pre.length()-1);
i++;
}
return pre;
}