14. Longest Common Prefix

14. Longest Common Prefix

題目

寫一個函數來找到字符串數組中的最長公共前綴字符串。
如果沒有公共前綴,返回一個空字符串 “”。
例1:
Input: [“flower”,”flow”,”flight”]
Output: “fl”

例2:
Input: [“dog”,”racecar”,”car”]
Output: “”
解釋:在輸入字符串數組中,沒有公共前綴。
注:所有給出的輸入都是小寫字母a-z.

代碼塊

class Solution {
    public static String longestCommonPrefix(String[] strs) {
        if (strs.length == 0)
            return "";
        if (strs.length == 1)   
            return strs[0];

        String strMin = strs[0];
        for(int i = 0; i < strs.length; i++){

            strMin = (strs[i].length() >= strMin.length())? strMin : strs[i]; 
        }
        for(int i = 0; i < strMin.length() ; i++){
            for(int j = 0; j < strs.length; j++){
                if(strs[j].charAt(i) != strMin.charAt(i)){
                    return strMin.substring(0, i);
                }
            }
        }
        return strs[0].substring(0, strMin.length());

    }
}

代碼分析

這個題看似很簡單,我先理解的是就以第一個字符串爲參考,然後後面的都跟它比較,寫出來不是很理想。整理思路後,
應該找出數組中最短的字符串(strMin.lenggth)用i來控制位數,然後按列來進行比較(strs.length)(第j個字符串的第i位)。
如果不相等,就返回子字符串;
如果不進入循環,比如[“”,”c”],返回substring(0,0)爲空。
注意i,j的含義即可。

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