博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
208. Implement Trie (Prefix Tree)
阅读量:5982 次
发布时间:2019-06-20

本文共 2248 字,大约阅读时间需要 7 分钟。

Implement a trie with insertsearch, and startsWith methods.

Example:

Trie trie = new Trie();trie.insert("apple");trie.search("apple");   // returns truetrie.search("app");     // returns falsetrie.startsWith("app"); // returns truetrie.insert("app");   trie.search("app");     // returns true

Note:

  • You may assume that all inputs are consist of lowercase letters a-z.
  • All inputs are guaranteed to be non-empty strings.

 

Trie的基本实现:

1 struct TrieNode{ 2     TrieNode* children[26]; 3     bool isWord; 4     TrieNode(){ 5         for(int i=0;i<26;i++){ 6             children[i]=NULL; 7         } 8     } 9     ~TrieNode(){10         for(int i=0;i<26;i++){11             delete children[i];12         }13     }14 };15 class Trie {16 private:17     TrieNode* root;18 public:19     /** Initialize your data structure here. */20     Trie() {21         root = new TrieNode();22     }23     24     /** Inserts a word into the trie. */25     void insert(string word) {26         TrieNode* curr = root;27         for(auto c: word){28             if(curr->children[c-'a']==NULL){29                 curr->children[c-'a'] = new TrieNode();30             }31             curr = curr->children[c-'a'];32         }33         curr->isWord = true;34     }35     36     /** Returns if the word is in the trie. */37     bool search(string word) {38         TrieNode* curr = root;39         for(auto c: word){40             if(curr->children[c-'a']==NULL){41                 return false;  42             }43             curr = curr->children[c-'a'];44         }45         46         return curr->isWord;47     }48     49     /** Returns if there is any word in the trie that starts with the given prefix. */50     bool startsWith(string prefix) {51         TrieNode* curr = root;52         for(auto c: prefix){53             if(curr->children[c-'a']==NULL){54                 return false;55             }56             curr=curr->children[c-'a'];57         }58         59         return true;60     }61 };62 63 /**64  * Your Trie object will be instantiated and called as such:65  * Trie obj = new Trie();66  * obj.insert(word);67  * bool param_2 = obj.search(word);68  * bool param_3 = obj.startsWith(prefix);69  */

 

转载于:https://www.cnblogs.com/ruisha/p/9311035.html

你可能感兴趣的文章
air 4.0+,Ane打包注意事项【适用Android】
查看>>
驱动架构的一些开源项目
查看>>
解决jquery中$命名冲突的几种方法
查看>>
KPI绩效考核为何在国内不管用?
查看>>
你所不知的VIM强大功能
查看>>
react+redux状态管理实现排序 合并多个reducer文件
查看>>
Django 配置MySQL数据库 mysql
查看>>
27.读文件时通过两种方式判断文件结尾
查看>>
试水Proxmox最新版本PVE 5.3
查看>>
第7章核心代码《跟老男孩学习Linux运维:Shell编程实战》
查看>>
Codis--分布式redis架构设计
查看>>
2012 2013 2014 Lync MVP 的坚持
查看>>
部署Jboss5拒绝直接使用ip方式访问
查看>>
二级缓存相关属性
查看>>
Ironfan在大数据集群部署、配置管理中的应用
查看>>
【原创】MySQL 实现Oracle或者PostgreSQL的row_number over 这样的排名语法
查看>>
rhel6 上udev的绑定
查看>>
编写校验规则文件
查看>>
演示:配置安全的shell属性
查看>>
python psutil
查看>>