208 Implement Trie (Prefix Tree) 字典树(前缀树)
Posted lina2014
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了208 Implement Trie (Prefix Tree) 字典树(前缀树)相关的知识,希望对你有一定的参考价值。
实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个方法。
注意:
你可以假设所有的输入都是小写字母 a-z。
详见:https://leetcode.com/problems/implement-trie-prefix-tree/description/
class TrieNode { public: TrieNode *next[26]; char c; bool isWord; TrieNode():isWord(false) { memset(next,0,sizeof(TrieNode*)*26); } TrieNode(char _c):c(_c),isWord(false) { memset(next,0,sizeof(TrieNode*)*26); } }; class Trie { public: /** Initialize your data structure here. */ Trie() { root=new TrieNode(); } /** Inserts a word into the trie. */ void insert(string word) { TrieNode *p=root; int id; for(char c:word) { id=c-‘a‘; if(p->next[id]==nullptr) { p->next[id]=new TrieNode(c); } p=p->next[id]; } p->isWord=true; } /** Returns if the word is in the trie. */ bool search(string word) { TrieNode *p=root; int id; for(char c:word) { id=c-‘a‘; if(p->next[id]==nullptr) { return false; } p=p->next[id]; } return p->isWord; } /** Returns if there is any word in the trie that starts with the given prefix. */ bool startsWith(string prefix) { TrieNode *p=root; int id; for(char c:prefix) { id=c-‘a‘; if(p->next[id]==nullptr) { return false; } p=p->next[id]; } return true; } private: TrieNode *root; }; /** * Your Trie object will be instantiated and called as such: * Trie obj = new Trie(); * obj.insert(word); * bool param_2 = obj.search(word); * bool param_3 = obj.startsWith(prefix); */
以上是关于208 Implement Trie (Prefix Tree) 字典树(前缀树)的主要内容,如果未能解决你的问题,请参考以下文章
208. Implement Trie (Prefix Tree)
208. Implement Trie (Prefix Tree)
208. Implement Trie (Prefix Tree)
208. Implement Trie (Prefix Tree)