每日一题前缀树-Map实现

Posted 唐宋xy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日一题前缀树-Map实现相关的知识,希望对你有一定的参考价值。

解析

上一道题使用了前缀树的第一种实现方式–数组来实现,这里采用前缀树的第二种实现方式来实现–Map

优点是,可以兼容不同的类型,使用数组只能兼容小写的字母

代码实现

public class TrieTree2 

    public static class Node 
        private int pass;
        private int end;
        private Map<Integer, Node> nexts; // 当前节点下所有子节点,key->字母的路径,Node该路径对应的节点

        public Node() 
            pass = 0;
            end = 0;
            nexts = new HashMap<>();
        
    

    public static class Trie 
        private Node root;

        public Trie() 
            root = new Node();
        


        public void insert(String word) 
            if(word == null) 
                return;
            
            char[] str = word.toCharArray();
            Node node = root;
            node.pass++;
            int index = 0;
            for (int i = 0; i < str.length; i++) 
                index = (int)str[i];
                if(!node.nexts.containsKey(index)) 
                    node.nexts.put(index, new Node());
                
                node = node.nexts.get(index);
                node.pass++;
            
            node.end++;
        

        public void delete(String word) 
            if(word == null) 
                return;
            
            char[] str = word.toCharArray();
            Node node = root;
            int index = 0;
            for (int i = 0; i < str.length; i++) 
                index = str[i];
                if(--node.nexts.get(index).pass == 0) 
                    node.nexts.remove(index);
                    return;
                
                node = node.nexts.get(index);
            
            node.end--;
        
    



以上是关于每日一题前缀树-Map实现的主要内容,如果未能解决你的问题,请参考以下文章

每日一题前缀树-Map实现

每日一题前缀树

每日一题前缀树

每日一题前缀树

2021春季每日一题week5 未完结

2021春季每日一题week6 未完结