【題解】LeetCode-最長公共前綴(longest-common-prefix)

14. 最長公共前綴

編寫一個函數來查找字符串數組中的最長公共前綴。

如果不存在公共前綴,返回空字符串 “”。

示例 1:

輸入: [“flower”,“flow”,“flight”]
輸出: “fl”
示例 2:

輸入: [“dog”,“racecar”,“car”]
輸出: “”
解釋: 輸入不存在公共前綴。
說明:

所有輸入只包含小寫字母 a-z 。

思路
比較直觀的做法:
遍歷一次列表,每次用已經找到公共前綴和下一個串比較取出前綴更新。

解法

class Solution {
    public String longestCommonPrefix(String[] strs) {
        if (strs.length < 1) {
            return "";
        }
        if (strs.length < 2) {
            return strs[0];
        }
        String s = prefix(strs[0], strs[1]);
        for (int i = 2; i < strs.length; i++) {
            s = prefix(s, strs[i]);
        }
        return s;
    }

    private String prefix(String s, String t) {
        if (null == s || null == t) {
            if (null == s && null == t) {
                return "";
            }
            if (null == s) {
                return t;
            }
            return s;
        }
        int len = Math.min(s.length(), t.length());
        if (len <= 0) {
            return "";
        }
        StringBuilder ans = new StringBuilder();
        for (int i = 0; i < len; i++) {
            if (s.charAt(i) == t.charAt(i)) {
                ans.append(s.charAt(i));
            } else {
                break;
            }
        }
        return ans.toString();
    }
}

以上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章