Leetcode: prefijo común 14-más largo

14. El prefijo común más largo

Escribe una función para encontrar el prefijo común más largo en una matriz de cadenas.

Si no hay un prefijo común, se devuelve una cadena vacía "".

Ejemplo 1:

Entrada: ["flor", "flujo", "vuelo"]
Salida: "fl"
Ejemplo 2:

Entrada: ["perro", "coche de carreras", "coche"]
Salida: ""
Explicación: No hay un prefijo común para la entrada.
Descripción:

Todas las entradas contienen solo letras minúsculas az.

Ideas para resolver problemas

Inserte la descripción de la imagen aquí
Mi enfoque es bastante estúpido, que es similar al algoritmo BF, coincidencia violenta, si encuentra una falta de coincidencia, registre directamente la posición y devuelva la longitud del prefijo.

Pero este método debe prestar atención a algunos pozos:

  1. Qué hacer si la longitud de la cuerda en la primera posición es mayor que la de las otras cuerdas
  2. Cuando se encuentra una matriz de caracteres vacía y el primer elemento de la primera matriz de cadenas es ""
  3. Cómo salir del bucle de dos capas

Código

class Solution {
    
    
    public String longestCommonPrefix(String[] strs) {
    
    
  		int i = 0,k=0;
        boolean flag = true;

        //如果长度为1
        if (strs.length == 1) {
    
    
            return strs[0];
        }

        //数组第一个元素为""处理
        if(strs.length == 0 || strs[0].length() ==0){
    
    
            return "";
        }


        //开始循环
        outterLoop:while (i < strs[0].length()) {
    
    
            char c = strs[0].charAt(i);
            //m控制除0位置的其它字符串下标
            int m = 1;

            while ( m < strs.length ) {
    
    
                if (k < strs[m].length() && c != strs[m].charAt(k)) {
    
    
                    flag = false;
                    break outterLoop;
                  //后面的字符串字符越界
                }else if(!(k < strs[m].length())){
    
    
                    break outterLoop;
                }
                m++;
            }
            //k控制的是除0位置其它字符串的字符位置
            k++;
            //控制0位置的字符
            i++;
        }

          return strs[0].substring(0, k);
    }
}

prueba

¡No envíe preguntas a ciegas, o lo golpearán!
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/JAYU_37/article/details/107234052
Recomendado
Clasificación