//我的方法
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;
}