【LeetCode】【Java】14. 最長公共前綴——編寫一個函數來查找字符串數組中的最長公共前綴 如果不存在公共前綴 返回空字符串

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();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章