zoukankan      html  css  js  c++  java
  • 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     TrieNode *dic[27];
     4     // Initialize your data structure here.
     5     TrieNode() {
     6         for (int i = 0; i < 27; i++)
     7             dic[i] = 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 word) {
    19         TrieNode* cur = root;
    20         for (int i = 0, len = word.size(); i < len; i++)
    21         {
    22             int loc = (int)(word[i] - 'a');
    23             if (cur->dic[loc] == NULL)
    24                 cur->dic[loc] = new TrieNode();
    25             cur = cur->dic[loc];
    26         }
    27         if (cur->dic[26] == NULL)
    28             cur->dic[26] = new TrieNode();
    29     }
    30 
    31     // Returns if the word is in the trie.
    32     bool search(string word) {
    33         TrieNode* cur = root;
    34         for (int i = 0, len = word.size(); i < len; i++)
    35         {
    36             int loc = (int)(word[i] - 'a');
    37             if (cur->dic[loc] == NULL) return false;
    38             cur = cur->dic[loc];
    39         }
    40         if (cur->dic[26] == NULL) return false;
    41         return true;
    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* cur = root;
    48         for (int i = 0, len = prefix.size(); i < len; i++)
    49         {
    50             int loc = (int)(prefix[i] - 'a');
    51             if (cur->dic[loc] == NULL) return false;
    52             cur = cur->dic[loc];
    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");
  • 相关阅读:
    jQuery的事件处理
    《CSS mastery》 读书笔记
    javascript 基础三
    javascript 基础二
    webpack全局引入jquery的方法
    解决mongoVue的collections不显示问题
    javascript 实现一个回文数字
    nth-child和:nth-of-type的区别
    iscroll5实现一个下拉刷新上拉加载的效果
    js(jquery)解决input元素的blur事件和其他非表单元素的click事件冲突的方法
  • 原文地址:https://www.cnblogs.com/fenshen371/p/4948929.html
Copyright © 2011-2022 走看看