Leetcode: busque el prefijo común más largo (método de búsqueda binaria)

Escriba una función para encontrar el prefijo común más largo en una matriz de cadenas.
Si no hay un prefijo público, se devuelve la cadena vacía "".
Ejemplo 1:

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

Inserte la descripción de la imagen aquí
beginWith (String s): determina si la cadena comienza con el carácter o subcadena especificados

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;
}

Publicado 6 artículos originales · me gusta 0 · visitas 19

Supongo que te gusta

Origin blog.csdn.net/qq_44158395/article/details/105445461
Recomendado
Clasificación