zoukankan      html  css  js  c++  java
  • LeetCode OJ:Implement Trie (Prefix Tree)(实现一个字典树(前缀树))

    Implement a trie with insertsearch, and startsWith methods.

    实现字典树,前面好像有道题做过类似的东西,代码如下:

     1 class TrieNode {
     2 public:
     3     // Initialize your data structure here.
     4     TrieNode():isLeaf(false)
     5     {
     6         for(auto & t : dic){
     7             t = NULL;
     8         }
     9     }
    10     TrieNode * dic[26];
    11     bool isLeaf;
    12 };
    13 
    14 class Trie {
    15 public:
    16     Trie() {
    17         root = new TrieNode();
    18     }
    19 
    20     // Inserts a word into the trie.
    21     void insert(string word) {
    22         TrieNode * p = root;
    23         for(int i = 0; i < word.size(); ++i){
    24             int index = word[i] - 'a';
    25             if(p->dic[index] == NULL)
    26                 p->dic[index] = new TrieNode();
    27             p = p->dic[index];
    28         }
    29         p->isLeaf = true;
    30     }
    31 
    32     // Returns if the word is in the trie.
    33     bool search(string word) {
    34         TrieNode * p = root;
    35         for(int i = 0; i < word.size(); ++i){
    36             int index = word[i] - 'a';
    37             if(p->dic[index] == NULL)
    38                 return false;
    39             p = p->dic[index];
    40         }
    41         return p->isLeaf;
    42     }
    43 
    44     // Returns if there is any word in the trie
    45     // that starts with the given prefix.
    46     bool startsWith(string prefix) {
    47         TrieNode * p = root;
    48         for(int i = 0; i < prefix.size(); ++i){
    49             int index = prefix[i] - 'a';
    50             if(p->dic[index] == NULL)
    51                 return false;
    52             p = p->dic[index];
    53         }
    54         return true;
    55     }
    56 
    57 private:
    58     TrieNode* root;
    59 };
    60 
    61 // Your Trie object will be instantiated and called as such:
    62 // Trie trie;
    63 // trie.insert("somestring");
    64 // trie.search("key");
  • 相关阅读:
    java中的位运算符
    Servlet中的初始化参数、上下文参数、以及@Resource资源注入
    Servlet中文件上传的几种方式
    marquee标签的使用
    SpringBoot热部署的两种方式
    eclipse中安装lombok插件
    关于Servlet中的转发和重定项
    Cormen — The Best Friend Of a Man CodeForces 732B
    牛客小白月赛9之签到题
    Codeforces アンバランス / Unbalanced
  • 原文地址:https://www.cnblogs.com/-wang-cheng/p/5015300.html
Copyright © 2011-2022 走看看