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


    June-20-2019

    白给的。

    时间复杂度都和str的长度有关。这个结构其实就是空间换时间

    class Trie {
        
        public class Node {
            boolean isLetter;
            Character letter;
            Map<Character, Node> nextLevel;
            
            public Node(Character letter, boolean isLetter) {
                this.isLetter = isLetter;
                this.letter = letter;
                this.nextLevel = new HashMap<>();
            }
        }
        
        
        Node root;
        
    
        /** Initialize your data structure here. */
        public Trie() {
            this.root = new Node(null, false);
        }
        
        /** Inserts a word into the trie. */
        public void insert(String word) {
            Node temp = root;
            for (Character c : word.toCharArray()) {
                if (!temp.nextLevel.containsKey(c)) {
                    temp.nextLevel.put(c, new Node(c, false));
                }
                temp = temp.nextLevel.get(c);
            }
            temp.isLetter = true;
        }
        
        /** Returns if the word is in the trie. */
        public boolean search(String word) {
            Node temp = root;
            for (Character c : word.toCharArray()) {
                if (!temp.nextLevel.containsKey(c)) {
                    return false;
                } else {
                    temp = temp.nextLevel.get(c);
                }
            }
            return temp.isLetter;
        }
        
        /** Returns if there is any word in the trie that starts with the given prefix. */
        public boolean startsWith(String prefix) {
            Node temp = root;
            for (Character c : prefix.toCharArray()) {
                if (!temp.nextLevel.containsKey(c)) {
                    return false;
                } else {
                    temp = temp.nextLevel.get(c);
                }
            }
            return (temp.isLetter || !temp.nextLevel.isEmpty());
        }
    }
    

    Node[26] 来做也行.

    nextLevel[tempChar - 'a'] = new Node()这样

  • 相关阅读:
    移位运算符
    java 链表数据结构
    log4j.properties配置详解
    java异常面试题
    QuickHit项目(输出字符串游戏)
    适配器模式
    java 单例
    sql索引的填充因子多少最好,填充因子的作用?
    聚焦索引和非聚焦索引的区别
    二叉树。。。。
  • 原文地址:https://www.cnblogs.com/reboot329/p/5870457.html
Copyright © 2011-2022 走看看