Sobre LeetCode mejorar la resolución de problemas (b)

Hoy en día encontrar un problema, tengo que decir, la idea es todo, para compartir mi análisis y la mentalidad y sentimientos de manera resolutiva de hermano mayor de resolución de problemas.

 

820. La palabra de codificación de compresión

Tema Fuente: https://leetcode-cn.com/problems/short-encoding-of-words/

 

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.

 

 

Concisa explicación sobre los requisitos de la materia: Por ejemplo, el tiempo y yo, debido a mi es el momento de retirar el sufijo, porque me pueden encontrar # # Desde el momento, no hay tiempo establecido # # yo de nuevo, formando así un carácter más corto longitud de la cadena.

 

Mi idea: un comienzo la construcción de una colección (con el fin de de-énfasis), la cadena de palabras en el conjunto, entonces el acceso a la colección, elimina la cadena actual de sufijos. Por último, añadir la colección (la longitud de todas las cadenas +1), que es la longitud final de la corta. Después de la operación de escritura había pasado, pero más lentamente, mirado después de la optimización del código de análisis oficial de la siguiente manera (substr que en realidad puede ser utilizado para eliminar un sufijo o ah no calificada).

 

Por supuesto, este problema puede ser resuelto con un árbol de diccionario, pero la complejidad del espacio será relativamente grande (de hecho, como el código conciso).

clase de soluciones {
 público :
     int minimumLengthEncoding (vector < string > y palabras) {
         int len = 0 ;
        unordered_set < cadena > S (words.begin (), words.end ());
        para ( const  cadena y palabra: palabras)
         para ( int i = 1 ; i <word.size (); i ++ )
                S.erase (word.substr (i));
        para (palabra auto: S)
        len + = word.size () + 1 ;
        volver len;
            
    }
};

 

Alta complejidad, es exponencial.

Gangster abajo para compartir ideas (increíble).

 

En primer lugar, sin importar el idioma, la cadena de clasificación de envases siempre de acuerdo con el orden en el diccionario, entonces podemos encontrar una regla, todas las cuerdas en el orden inverso, tales como: el tiempo -> emiten mí-> em por Dell> LLED, entonces reordenando, no es necesariamente delante de ellos emiten, no podemos encontrar em más fácil, y eliminar. Si alguna cadena, puede descartar una por una de acuerdo con el orden del diccionario, no existe el último sufijo cadena restante.

 

Código Gangster:

clase de soluciones {
 público :
     int minimumLengthEncoding (vector < string > y palabras) {
         a (Auto & s: palabras) {
            revertir (s.begin (), s.end ());
        }
        sort (words.begin (), words.end ());
        int res = 0 ;
        para ( int i = 0 ; i <words.size () - 1 ; i ++ ) {
             int size = palabras [i] .size ();
            si (palabras [i] == palabras [i + 1 ] .substr ( 0 , tamaño)) continuar ;
            res + = tamaño + 1 ;
        }
        de retorno . res + words.back () size () + 1 ;
    }
};

Código enlaces: https://leetcode-cn.com/problems/short-encoding-of-words/solution/dan-ci-de-ya-suo-bian-ma-by-leetcode-solution/313014

 

 

Sólo puedo decir que la idea es demasiado fuerte.

 

Ponche: se encontró con la cadena pesada para ir sufijo, primer conjunto de pensamiento, el árbol de diccionario, a continuación, invertir el orden lexicográfico.

Supongo que te gusta

Origin www.cnblogs.com/xiangqi/p/12588765.html
Recomendado
Clasificación