データ構造アルゴリズムの問題/文字列配列の最長共通プレフィックス

1455 ワード

タイトル:
 文字列配列の最長共通プレフィックスを検索する関数を作成します.
 共通のプレフィックスが存在しない場合は、空の文字列「」を返します.
 例1: 入力:[[flower],[flow],[flight] 出力:「fl」   例2: 入力:[[dog],[racecar],[car]] 出力:「」 入力は共通プレフィックスが存在しません. 
分析:
巡回して、文字が違ったり、文字列が巡回した長さを超えたら戻ります.
public class LongestCommonPrefix {
    public String longestCommonPrefixFun(String[] strArr) {
        int index = 0;
        if (strArr.length == 0) {
            return "";
        }
        int i;
        for (i = 0; i < strArr[0].length(); i++) {
            char current = strArr[0].charAt(i);
            for (String str : strArr) {
                if (str.length() == i || current != str.charAt(i)) {  
                    //             str[0,i-1],substring(0, i)     。            
                    //str.length() == i       strArr     str    ,      
                    //current != str.charAt(i)   strArr[0]         i  str     str i    
                    return str.substring(0, i);
                }
            }
            i++;
        }

        return strArr[0].substring(0, i-1);//           ,       
    }

    public static void main(String[] args) {
        LongestCommonPrefix longestCommonPrefix = new LongestCommonPrefix();
        String[] strArr = {"fq12", "fq1", "fq2"};
        String result = longestCommonPrefix.longestCommonPrefixFun(strArr);
        System.out.println(result);
    }
}
https://www.jianshu.com/p/e48dd179f760