zoukankan      html  css  js  c++  java
  • [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.

    实现字典树,没啥好说的。

     1 class TrieNode {
     2 public:
     3     // Initialize your data structure here.
     4     TrieNode *ch[26];
     5     bool isKey;
     6     TrieNode() : isKey(false) {
     7         for (auto &a : ch) a = NULL;
     8     }
     9 };
    10 
    11 class Trie {
    12 public:
    13     Trie() {
    14         root = new TrieNode();
    15     }
    16 
    17     // Inserts a word into the trie.
    18     void insert(string s) {
    19         TrieNode *p = root;
    20         for (auto &a : s) {
    21             int i = a - 'a';
    22             if (p->ch[i] == NULL) p->ch[i] = new TrieNode();
    23             p = p->ch[i];
    24         }
    25         p->isKey = true;
    26     }
    27 
    28     // Returns if the word is in the trie.
    29     bool search(string key) {
    30         TrieNode *p = root;
    31         for (auto &a : key) {
    32             int i = a - 'a';
    33             if (p->ch[i] == NULL) return false;
    34             p = p->ch[i];
    35         }
    36         return p->isKey;
    37     }
    38 
    39     // Returns if there is any word in the trie
    40     // that starts with the given prefix.
    41     bool startsWith(string prefix) {
    42         TrieNode *p = root;
    43         for (auto &a : prefix) {
    44             int i = a - 'a';
    45             if (p->ch[i] == NULL) return false;
    46             p = p->ch[i];
    47         }
    48         return true;
    49     }
    50 
    51 private:
    52     TrieNode* root;
    53 };
    54 
    55 // Your Trie object will be instantiated and called as such:
    56 // Trie trie;
    57 // trie.insert("somestring");
    58 // trie.search("key");
  • 相关阅读:
    JavaScript 学习笔记之最终篇
    JavaScript 学习笔记(三)
    JavaScript 学习笔记(一)
    JAVA 多线程机制(二)
    JAVA 多线程机制(一)
    apache配置CA证书通过https通信
    httpd的一些知识点
    Elasticsearch安装图形化界面工具Head插件
    Logstash收集nginx访问日志和错误日志
    lvm管理卷之缩减卷大小
  • 原文地址:https://www.cnblogs.com/easonliu/p/4488522.html
Copyright © 2011-2022 走看看