título Descripción
Dada una lista de palabras, esta lista se codifica como un índice de la cadena S y una lista de índice A.
Por ejemplo, si la lista es [ "tiempo", "yo", "campana"], que puede expresarse como S = "tiempo de campana # #" y los índices = [0, 2, 5].
Para cada índice, podemos empezar por la lectura del índice de la cadena de la cadena S en la posición hasta el final "#", para restaurar nuestra lista previa de las palabras.
A continuación, la longitud mínima de la cadena para el éxito de una lista de palabras dada para la codificación es ¿cuánto?
Ejemplo:
Entrada: palabras = [ "tiempo", "yo", "campana"]
de salida: 10
Descripción: S = "tiempo de campana # # ", los índices = [0, 2, 5].
consejos:
. 1 <= words.length <= 2,000
. 1 <= palabras [I] .length <=. 7
cada palabra en minúsculas.
Ideas de resolución de problemas
La longitud de cada palabra de acuerdo con el orden descendente,
Luego atravesar toda la matriz encuentros una palabra palabra, StringBuilder juez no existe la palabra # este campo, si no, puede añadir este campo StringBuilder
De nuevo a la longitud StringBuilder
Código es el siguiente
empaquetar leetcode;
importación java.util.Arrays;
público de clase MinimumLengthEncoding {
pública int minimumLengthEncoding (String [] {palabras)
Arrays.sort (palabras, word1 (String, String palabra2) -> word2.length () - word1.length ());
StringBuilder sb = nuevo StringBuilder ();
sb.append (palabras [ 0] + "#" );
para ( int i = 0; i <words.length; i ++ ) {
si (sb.indexOf (palabras [i] + "#") == - 1 ) {
sb.append (palabras [i] + "#" ) ;
}
}
Retorno sb.length ();
}
}