Tema:
escriba 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.
Nota:
Toda la entrada solo contiene letras minúsculas az.
Idea:
Usando la clasificación en la matriz, puede ordenar los caracteres en la matriz de acuerdo con el orden de los caracteres (la diferencia entre el final y el final es la mayor en este momento), luego compare el primero y el último en la matriz, y simplemente unirlos.
responder:
public class TheLongestPre {
public static void main(String[] args) {
String s = theLongestPre(new String[]{
"flower", "flow", "fpple","flod"});
System.out.println(s);
}
public static String theLongestPre(String[] strs){
if (strs.length==0) return "";
if (strs.length==1) return strs[0];
int len = strs.length;
Arrays.sort(strs);
StringBuilder sb = new StringBuilder();
for(int i = 0; i< strs[0].length(); i++){
if (strs[len-1].charAt(i)==strs[0].charAt(i)) {
sb.append(strs[0].charAt(i));
}
else return sb.toString();
}
return sb.toString();
}
}
Descripción del efecto: