[Medio] 820. La palabra de compresión de codificación

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


enlace

título Descripción

Aquí Insertar imagen Descripción

árbol de prefijo trie

Primeras palabras en el orden descendente matriz de cadenas por longitud, seguido de la inserción inversa Trie

class Solution {
    public int minimumLengthEncoding(String[] words) {
        if(words == null || words.length == 0){
            return 0;
        }
        Arrays.sort(words,(s1,s2)->s2.length()-s1.length());
        Trie root = new Trie();
        int res = 0;
        for(int i = 0; i < words.length ;i++){
            res += root.insert(words[i]);
        }
        return res;
    }
    
    class Trie{
        TrieNode root;
        
        public Trie(){
            root = new TrieNode();
        }
        public int insert(String str){//逆序插入
            char[] chars = str.toCharArray();
            boolean isNew = false;
            TrieNode cur = root;
            for(int i = chars.length-1 ; i >= 0 ;i-- ){
                if(cur.children[chars[i]-'a'] == null){
                    cur.children[chars[i]-'a'] = new TrieNode();
                    isNew = true;
                }
                cur = cur.children[chars[i]-'a'];
            }
            return isNew ? chars.length + 1 : 0;
        }
    }
    
    class TrieNode{
        char val;
        TrieNode[] children = new TrieNode[26];
        
        TrieNode(){}
    }
    
}
Publicado 55 artículos originales · ganado elogios 1 · visitas 859

Supongo que te gusta

Origin blog.csdn.net/weixin_42469108/article/details/105159129
Recomendado
Clasificación