À propos LeetCode améliorer la résolution des problèmes (b)

Aujourd'hui, rencontre un problème, je dois dire, l'idée est tout, de partager mon analyse et la mentalité de résoudre les problèmes et les sentiments de résoudre les problèmes de façon grand frère.

 

820. La compression de mot de codage

Sujet Source: https://leetcode-cn.com/problems/short-encoding-of-words/

 

Étant donné une liste de mots, cette liste sera codé comme un indice chaîne de S et une liste d'index A.

Par exemple, si la liste est [ "temps", "moi", "cloche"], nous pouvons être Exprimé en S = "# temps cloche #" et index = [0, 2, 5].

Pour chaque indice, nous pouvons commencer par la lecture de l'index de chaîne de la chaîne S en position jusqu'à la fin de « # », pour restaurer notre liste précédente des mots.

Ensuite, la longueur minimale de la chaîne à la réussite d'une liste de mots donnée pour l'encodage est combien?

 

exemple:

Entrée: mots = [ "temps", "moi", "cloche"]
Sortie: 10
Description: S = "# temps cloche # ", index = [0, 2, 5].
 

Conseils:

. 1 <= words.length <= 2000
. 1 <= mots [I] .length <=. 7
chaque minuscule mot.

 

 

explication concise sur les exigences de sujet: Par exemple, le temps et moi, parce que moi, il est temps d'enlever le suffixe, parce que vous pouvez me trouver # Du # temps, le temps n'établi # me # nouveau, formant ainsi un court caractère longueur de la chaîne.

 

Mon idée: un contruire une collection (le but de désaccentuation), la chaîne de mots dans l'ensemble, l'accès à la collection, supprimer la chaîne actuelle de suffixes. Enfin, ajoutez la collection (la longueur de toutes les chaînes +1), il est la longueur finale de la plus courte. Après l'opération d'écriture était passé, mais plus lentement, après l'optimisation regardé officielle de code d'analyse syntaxique suit comme (substr qui peut effectivement être utilisé pour supprimer un suffixe, ou ah non qualifié).

 

Bien sûr, ce problème peut être résolu avec un arbre dictionnaire, mais la complexité de l'espace sera relativement important (en fait, comme le code concis).

classe Solution {
 publique :
     int minimumLengthEncoding (vector < string > et mots) {
         int len = 0 ; 
        unordered_set < chaîne de caractères > S (words.begin (), words.end ());
        pour ( const  string & mot: mots)
         pour ( int i = 1 ; i <word.size (); i ++ ) 
                S.erase (word.substr (i)); 
        pour (mot auto: S) 
        len + = mot. taille () + 1 ;
        revenirseulement; 
            
    } 
};

 

Haute complexité, est exponentielle.

Gangster ci-dessous pour partager des idées (incroyable à).

 

Tout d'abord, peu importe la langue, les conteneurs de tri de chaînes toujours en fonction de l'ordre dans le dictionnaire, alors nous pouvons trouver une règle, toutes les chaînes dans l'ordre inverse, comme: temps -> Emit moi-> em par Dell> LLED, nous réordonnancement, n'est pas nécessairement devant em émettons nous ne pouvons pas trouver em plus facile, et supprimer. Que ce soit une chaîne, vous pouvez exclure un par un selon l'ordre dictionnaire, le dernier suffixe de chaîne restante n'existe pas.

 

Code de Gangster:

classe Solution {
 publique :
     int minimumLengthEncoding (vector < string > et mots) {
         pour (auto & s: mots) { 
            inverse (s.begin (), s.end ()); 
        } 
        Sort (words.begin (), words.end ()); 
        int res = 0 ;
        pour ( int i = 0 ; i <words.size () - 1 ; i ++ ) {
             int size = mots [i] .size ();
            si (mots [i] == mots [i + 1 ] .substr ( 0 , taille)) continue ;
            res + = taille + 1 ; 
        } 
        Return . Res + words.back () Taille () + 1 ; 
    } 
};

Code liens: https://leetcode-cn.com/problems/short-encoding-of-words/solution/dan-ci-de-ya-suo-bian-ma-by-leetcode-solution/313014

 

 

Je ne peux dire que l'idée est trop forte.

 

Punch: rencontre chaîne lourde pour aller suffixe, premier jeu de la pensée, l'arbre dictionnaire, puis d'inverser l'ordre lexicographique.

Je suppose que tu aimes

Origine www.cnblogs.com/xiangqi/p/12588765.html
conseillé
Classement