1. 程式人生 > >LeetCode(14)獲取字串陣列中字串的公共字首

LeetCode(14)獲取字串陣列中字串的公共字首

問題:

Write a function to find the longest common prefix string amongst an array of strings.

If there is no common prefix, return an empty string "".

java解答

class Solution {
    /**
     * 思路
     * 根據這個字串陣列中最短的字串的長度,確定遍歷的次數
     * 在每次遍歷中,遍歷每個字串,依次從首個字串的首個字元開始,分別與每個字串的對應位置的字元比較
     * 如果不等,則break,如果一次遍歷過程結束,沒有break,將這個字元放到結果字串中
     */
    //結果字串
    private String result = "";
    //字串陣列中最短字串的長度
    private int minStr = 0;
    //獲取這個字串陣列中最短字串的長度
    public void getMinStr(String[] strs){
        if(strs.length < 1){
            return;
        }
        int temp = strs[0].length();
        for(String str:strs){
            if(temp>str.length()){
                temp = str.length();
            }
        }
        this.minStr = temp;
    }
    //遍歷字串陣列,存放結果
    public void getLongestCommonPrefix(String[] strs){
        for(int i = 0;i < this.minStr; i++){
            for(int j = 1; j < strs.length; j++){
                if(strs[0].charAt(i) != strs[j].charAt(i)){
                    return;
                }
            }
            this.result += strs[0].charAt(i);
        }
    }
    public String longestCommonPrefix(String[] strs) {
        if(strs.length < 1){
            return "";
        }else if(strs.length == 1){
            return strs[0];
        }
        this.getMinStr(strs);
        this.getLongestCommonPrefix(strs);
        return this.result;
    }
}