zoukankan      html  css  js  c++  java
  • 208. 实现 Trie (前缀树)

    思路比较简单 只是这种类用的不太习惯。。

    插入就是看儿子的这个位置有没有,有就可以给计数加一下,没有就新建节点 插到最后一个字符就设置isend

    查找就是一直往下走,如果走不动了就false,否则判断走到最后的isend

    判断前缀更简单了,,一直判断就行,都不用判断最后的isend

     1 class Trie {
     2 private:
     3     bool isEnd;      //这么写 感觉一个像一个树又像一个节点。。不太习惯啊
     4     Trie* next[26];
     5 public:
     6     Trie() {
     7         isEnd = false;
     8         memset(next, 0, sizeof(next));
     9     }
    10     
    11     void insert(string word) {
    12         Trie* node = this;
    13         for (char c : word) {
    14             if (node->next[c-'a'] == NULL) {
    15                 node->next[c-'a'] = new Trie();
    16             }
    17             node = node->next[c-'a'];
    18         }
    19         node->isEnd = true;
    20     }
    21     
    22     bool search(string word) {
    23         Trie* node = this;
    24         for (char c : word) {
    25             node = node->next[c - 'a'];
    26             if (node == NULL) {
    27                 return false;
    28             }
    29         }
    30         return node->isEnd;
    31     }
    32     
    33     bool startsWith(string prefix) {
    34         Trie* node = this;
    35         for (char c : prefix) {
    36             node = node->next[c-'a'];
    37             if (node == NULL) {
    38                 return false;
    39             }
    40         }
    41         return true;
    42     }
    43 };
    每天进步一点点~
  • 相关阅读:
    SIEM思考
    PowerDesigner15在生成SQL时报错Generation aborted due to errors detected during the verification of the mod
    Mongo驱动
    RsysLog
    vi全局替换方法
    RPM
    hdu1195 Open the Lock (DFS)
    调制:调幅(AM)与调频(FM)
    调制:调幅(AM)与调频(FM)
    追本溯源 —— 诗词、名言
  • 原文地址:https://www.cnblogs.com/libin123/p/14628088.html
Copyright © 2011-2022 走看看