zoukankan      html  css  js  c++  java
  • (medium)LeetCode .Implement Trie (Prefix Tree)

    Implement a trie with insertsearch, and startsWith methods.

    Note:
    You may assume that all inputs are consist of lowercase letters a-z.

    思路:实现单词查找树,它是一种树形结构;用于保存大量的字符串。它的优点是:利用字符串的公共前缀来节约存储空间。每个节点有26个从节点。isEndOfWord,children,两个关键变量。

    代码如下:

    class TrieNode {
        // Initialize your data structure here.
        boolean isEndOfWord;
        TrieNode[] children;
        public TrieNode() {
            this.isEndOfWord=false;
            this.children=new TrieNode[26];
        }
        
    }
    
    public class Trie {
        private TrieNode root;
    
        public Trie() {
            root = new TrieNode();
        }
    
        // Inserts a word into the trie.
        public void insert(String word) {
            TrieNode runner=root;
            for(char c:word.toCharArray()){
                if(runner.children[c-'a']==null){
                    runner.children[c-'a']=new TrieNode();
                }
                runner=runner.children[c-'a'];
            }
            runner.isEndOfWord=true;
        }
    
        // Returns if the word is in the trie.
        public boolean search(String word) {
           TrieNode runner=root;
           for(char c:word.toCharArray()){
               if(runner.children[c-'a']==null){
                   return false;
               }else{
                   runner=runner.children[c-'a'];
               }
           }
           return runner.isEndOfWord;
        }
    
        // Returns if there is any word in the trie
        // that starts with the given prefix.
        public boolean startsWith(String prefix) {
            TrieNode runner=root;
            for(char c:prefix.toCharArray()){
                if(runner.children[c-'a']==null){
                    return false;
                }else{
                    runner=runner.children[c-'a'];
                }
            }
            return true;
        }
    }
    
    // Your Trie object will be instantiated and called as such:
    // Trie trie = new Trie();
    // trie.insert("somestring");
    // trie.search("key");
    

      运行结果:

      

  • 相关阅读:
    一点关于this的理解
    BFC引发的关于position的思考
    JS HTML标签尺寸距离位置定位计算
    JS获取网页宽高方法集合
    JSDOM之节点
    并发- synchronized,锁
    公共文件下载-结构设计
    订单模块-结构设计
    ES-update
    ES使用笔记
  • 原文地址:https://www.cnblogs.com/mlz-2019/p/4734613.html
Copyright © 2011-2022 走看看