数据结构--Java实现字典树前缀树

写这个的原因是今天的每日一题要用到 然而我连前缀树都不会写 于是写一下前缀树 每日一题就不写了 嗯 没有时间
class Trie {
          
   
    Trie[] child;
    boolean isEnd;
    public Trie() {
          
   
        child=new Trie[26];
        isEnd=false;
    }
    
    public void insert(String word) {
          
   
        Trie node=this;
        for(int i=0;i<word.length();i++){
          
   
            int k=word.charAt(i)-a;
            if(node.child[k]==null){
          
   
                node.child[k]=new Trie();
            }
            node=node.child[k];
        }
        node.isEnd=true;//最后一个字母的isEnd为true
    }
    
    public boolean search(String word) {
          
   
        Trie node=this;
        for(int i=0;i<word.length();i++){
          
   
            int k=word.charAt(i)-a;
            if(node.child[k]==null){
          
   
                return false;
            }
            node=node.child[k];
        }
        return node.isEnd;//是否是结尾,说明是否是一个完整的词
    }
    
    public boolean startsWith(String prefix) {
          
   
        Trie node=this;
        for(int i=0;i<prefix.length();i++){
          
   
            int k=prefix.charAt(i)-a;
            if(node.child[k]==null){
          
   
                return false;
            }
            node=node.child[k];
        }
        return true;//不需要是结尾
    }
}
经验分享 程序员 微信小程序 职场和发展