[leetcode] 208. Implement Trie (Prefix Tree)
来源:互联网 发布:btob 知乎 编辑:程序博客网 时间:2024/06/06 00:16
Implement a trie with insert
, search
, and startsWith
methods.
Note:
You may assume that all inputs are consist of lowercase letters a-z
.
这道题是实现字典树,题目难度为Medium。
可能还有同学不太了解字典树,不了解的同学可以先看下字典树在wiki上的页面(传送门)。字典树的优点是插入和查找的时间复杂度为O(m),m为单词长度,但空间复杂度比较庞大。看到一篇介绍Trie的博文写的比较详细,建议不了解字典树的同学也详细看一看(传送门)。
Trie没有析构函数,这里是需要析构函数的,所以加入了采用深度优先搜索的析构函数。其他部分应该没什么难度了,具体代码:
class TrieNode {public: vector<TrieNode*> child; bool isIn; // Initialize your data structure here. TrieNode() : child(vector<TrieNode*>(26, NULL)), isIn(false) {}};class Trie {public: Trie() : root(new TrieNode()) {} ~Trie() { delNode(root); } void delNode(TrieNode* n) { for(int i=0; i<26; ++i) { if(n->child[i]) delNode(n->child[i]); } delete n; } // Inserts a word into the trie. void insert(string word) { TrieNode* n = root; for(auto ch:word) { if(n->child[ch-'a'] == NULL) n->child[ch-'a'] = new TrieNode(); n = n->child[ch-'a']; } n->isIn = true; } // Returns if the word is in the trie. bool search(string word) { TrieNode* n = root; for(auto ch:word) { if(n->child[ch-'a'] == NULL) return false; n = n->child[ch-'a']; } return n->isIn; } // Returns if there is any word in the trie // that starts with the given prefix. bool startsWith(string prefix) { TrieNode* n = root; for(auto ch:prefix) { if(n->child[ch-'a'] == NULL) return false; n = n->child[ch-'a']; } return true; }private: TrieNode* root;};// Your Trie object will be instantiated and called as such:// Trie trie;// trie.insert("somestring");// trie.search("key");
0 0
- LeetCode 208. Implement Trie (Prefix Tree)
- Leetcode 208. Implement Trie (Prefix Tree)
- 208. Implement Trie (Prefix Tree) LeetCode
- leetcode 208. Implement Trie (Prefix Tree)
- [LeetCode]208. Implement Trie (Prefix Tree)
- [leetcode] 208. Implement Trie (Prefix Tree)
- Leetcode 208. Implement Trie (Prefix Tree)
- Leetcode 208. Implement Trie (Prefix Tree)
- LeetCode-208.Implement Trie (Prefix Tree)
- LeetCode - 208. Implement Trie (Prefix Tree)
- [LeetCode] 208. Implement Trie (Prefix Tree)
- Leetcode 208. Implement Trie (Prefix Tree)
- [LeetCode]208. Implement Trie (Prefix Tree)
- leetcode-208. Implement Trie (Prefix Tree)
- Leetcode 208. Implement Trie (Prefix Tree)
- LeetCode 208. Implement Trie (Prefix Tree)
- [LeetCode]208. Implement Trie (Prefix Tree)
- leetcode 208. Implement Trie (Prefix Tree)
- JavaScript入门学习二
- Oracle HS (Heterogeneous Services)深入解析 及协同Gateway工作流程
- oracle调优笔记——归档
- HTML+CSS基础(七):CSS格式化排版
- Middle-题目11:137. Single Number II
- [leetcode] 208. Implement Trie (Prefix Tree)
- ant蚂蚁配置Java项目
- C#学习笔记
- Android开发--CardView使用
- Android 热修复之AndFix
- 大话设计模式-第05章 会修电脑不会修收音机?-依赖倒转原则
- mybatis框架中validationQuery选项的作用
- 第十四周项目2两个成员的类的模板(2)
- 九度OJ 1202