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()这样

  • 相关阅读:
    粘包_Server
    初见UDP_Server
    初见UDP_Client
    TCP/UDP协议
    网络编程相关概念
    mmap实现大文件快速拷贝
    生成这消费者问题(多线程实现)
    线程同步互斥实现资源访问
    信号灯(线程互斥)
    线程属性
  • 原文地址:https://www.cnblogs.com/reboot329/p/5870457.html
Copyright © 2011-2022 走看看