14. 最長公共前綴
編寫一個函數來查找字符串數組中的最長公共前綴。
如果不存在公共前綴,返回空字符串 “”。
示例 1:
輸入: ["flower","flow","flight"]
輸出: "fl"
示例 2:
輸入: ["dog","racecar","car"]
輸出: ""
解釋: 輸入不存在公共前綴。
說明:
所有輸入只包含小寫字母 a-z 。
因爲找的是數組的最長公共前綴,所以我們可以對這個數組進行一個排序處理==Arrays.sort(strs);==這樣的話我們就可以得到一個排序後的結果,
排序前:
[flight, flow, flower]
["dog","racecar","car"]
排序後:
[flight, flow, flower]
[car, dog, racecar]//因爲只有順序相同的單詞首字母纔有公共前綴
因爲是通過單詞字母順序來排列的,所以我們只需要將數組裏面的第一個元素,和最後一個元素來比較,即可以確定最長的功能前綴,因爲只有順序相同的單詞首字母纔有公共前綴,中間不會夾着其他首字母
class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs==null|| strs.length==0)return "";
Arrays.sort(strs);
StringBuilder stringBuilder = new StringBuilder();
// 取最小的單詞長度進行遍歷,公共部分也只能是在這部分產生
int k =Math.min(strs[0].length(), strs[strs.length - 1].length());
for (int i = 0; i < k; i++) {
if (strs[0].charAt(i) == strs[strs.length - 1].charAt(i)) {
// 拼接公共前綴
stringBuilder.append(strs[0].charAt(i));
}else {
break;
}
}
return stringBuilder.toString();
}
}