conjunto pitón () signo leetcode 820. La palabra de compresión de codificación

título

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.

pensamiento

A partir de la segunda palabra, la comparación con las revés ciclo anterior. Calcule el mismo registro.
Estúpidos que la solución, hasta 25/30 por una muestra. básicamente imposible cambiar para mejor. Corazón cansado
thisisimage
o mirar el código oficial de barras.

código

class Solution:
    def minimumLengthEncoding(self, words: List[str]) -> int:
        good = set(words)
        for word in words:
            for k in range(1, len(word)):
                good.discard(word[k:])
        return sum(len(word) + 1 for word in good)
链接:https://leetcode-cn.com/problems/short-encoding-of-words/solution/dan-ci-de-ya-suo-bian-ma-by-leetcode-solution/
来源:力扣(LeetCode)

Realmente conmovedor y conocimiento para los ciegos.
thisisimage

conjunto método ()

set () función crea un conjunto desordenado de elementos no se repite, intersección, diferencia, y los conjuntos de la relación puede ser probado, la deduplicación también puede calcularse similares.

Ejemplo:

a='handsome'
print(set(a))

Resultados:
{ 'O' 'n-', 'H', 'S', 'E', 'm', 'D' 'A'}
el conjunto de elementos, se puede utilizar, actualizar, eliminar, añadir o similar

a='handsome'
b=set(a)
print(b)
b.add('me')
b.update('are')
print(b)
b.update('are')
print(b)
b.remove('are')
print(b)

resultados:

{'o', 's', 'e', 'm', 'n', 'a', 'h', 'd'}
{'o', 's', 'e', 'm', 'n', 'r', 'me', 'a', 'h', 'd'}
{'o', 's', 'e', 'm', 'n', 'r', 'me', 'a', 'h', 'd'}

set () de descarte 与 remove

método de descarte () se utiliza para eliminar el elemento de recogida.
Este método difiere del método remove (), porque método remove de error () ocurre cuando la eliminación de un elemento que no existe, y el método de descarte () no lo hace.

trie

pensamiento

El método como se dijo, el objetivo no es una palabra reservada en todos los otros sufijos de palabras.
Algoritmo
para encontrar si diferentes palabras con el mismo sufijo, que se pueden insertar en el árbol de diccionario después de que en el orden inverso. Por ejemplo, tenemos el "tiempo" y "yo", "emiten" y "em" se puede insertar en el árbol de diccionario.
thisisimage
A continuación, los nodos hoja del árbol de diccionario (nodo sin hijos) en nombre de la palabra sin un sufijo, nodos hoja estadísticas longitud de palabra representan más uno y eso es lo que queremos respuestas.
Enlaces: https://leetcode-cn.com/problems/short-encoding-of-words/solution/dan-ci-de-ya-suo-bian-ma-by-leetcode-solution/
Fuente: Botón de estancia (LeetCode )

código

class Solution:
    def minimumLengthEncoding(self, words: List[str]) -> int:
        words = list(set(words)) #remove duplicates
        #Trie is a nested dictionary with nodes created
        # when fetched entries are missing
        Trie = lambda: collections.defaultdict(Trie)
        trie = Trie()

        #reduce(..., S, trie) is trie[S[0]][S[1]][S[2]][...][S[S.length - 1]]
        nodes = [reduce(dict.__getitem__, word[::-1], trie)
                 for word in words]

        #Add word to the answer if it's node has no neighbors
        return sum(len(word) + 1
                   for i, word in enumerate(words)
                   if len(nodes[i]) == 0)

Supongo que te gusta

Origin www.cnblogs.com/rmxob/p/12588126.html
Recomendado
Clasificación