題目
編寫一個函數來查找字符串數組中的最長公共前綴慕趴。
如果不存在公共前綴,返回空字符串 ""
刹帕。
示例 1:
編寫一個函數來查找字符串數組中的最長公共前綴。
如果不存在公共前綴煞赢,返回空字符串 ""。
示例 1:
輸入: ["flower","flow","flight"]
輸出: "fl"
示例 2:
輸入: ["dog","racecar","car"]
輸出: ""
解釋: 輸入不存在公共前綴哄孤。
說明:
所有輸入只包含小寫字母 a-z 照筑。
解題思路
需要一個字符串作為模板,判斷后面的字符串是否以這個模板為前綴瘦陈,如果判斷為false凝危,則將模板字符串去掉最后一位再比較,如果任然為false双饥,則再刪去一位媒抠,遞歸調用至判斷為true。這里使用的是第一個字符串為模板咏花。
public String longestCommonPrefix(String[] strs) {
if(strs.length == 0){
return "";
}
if (strs[0].isEmpty() && strs.length == 1) {
return "";
}
String shortest = strs[0];//以第一個字符串為準做對比
for (int i = 0; i < strs.length; i++) {
shortest = this.getShortest(strs[i], shortest);
}
return shortest;
?
}
?
private String getShortest(String s, String shortest) {
if (s.indexOf(shortest) != 0) {
shortest = shortest.substring(0, shortest.length() - 1);
if (shortest.isEmpty()) {
return "";
}
shortest = getShortest(s, shortest);//遞歸調用直到符合標準
}
return shortest;
}