Leetcode-最長の共通接頭辞を探します(二分探索法)

文字列配列で最も長い共通のプレフィックスを見つける関数を記述します。
パブリックプレフィックスがない場合は、空の文字列 ""が返されます。
例1:

输入: ["flower","flow","flight"]
输出: "fl"

ここに画像の説明を挿入
startsWith(String s):文字列が指定された文字または部分文字列で始まるかどうかを判断します。

public String longestCommonPrefix(String[] strs) {
    if (strs == null || strs.length == 0)
        return "";
    int minLen = Integer.MAX_VALUE;
    for (String str : strs)
        minLen = Math.min(minLen, str.length());
    int low = 1;
    int high = minLen;
    while (low <= high) {
        int middle = (low + high) / 2;
        if (isCommonPrefix(strs, middle))
            low = middle + 1;
        else
            high = middle - 1;
    }
    return strs[0].substring(0, (low + high) / 2);
}

private boolean isCommonPrefix(String[] strs, int len){
    String str1 = strs[0].substring(0,len);
    for (int i = 1; i < strs.length; i++)
        if (!strs[i].startsWith(str1))
            return false;
    return true;
}

元の記事を6件公開 気に入りました0 訪問数19

おすすめ

転載: blog.csdn.net/qq_44158395/article/details/105445461