LeetCode *** 208. Implement Trie (Prefix Tree) (给指针数组赋空间)

来源:互联网 发布:淘宝卡哪个好 编辑:程序博客网 时间:2024/06/06 06:41

题目:

Implement a trie with insert, search, and startsWith methods.


分析:

在给指针数组分空间的时候出错了几次。


代码:

class TrieNode {public:TrieNode *next[26];bool isStr = false;// Initialize your data structure here.TrieNode() {memset(next, 0, sizeof(next));}};class Trie {public:Trie() {root = new TrieNode();}// Inserts a word into the trie.void insert(string word) {int len = word.length();TrieNode *tr = root;for (int i = 0; i<len; ++i) {if (tr->next[word[i] - 'a'] == NULL) {tr->next[word[i] - 'a'] = new TrieNode();}tr = tr->next[word[i] - 'a'];}tr->isStr = true;}// Returns if the word is in the trie.bool search(string word) {TrieNode* tr = root;int len = word.length();for (int i = 0; i<len; ++i) {if (tr->next[word[i] - 'a'] == NULL)return false;tr = tr->next[word[i] - 'a'];}return tr->isStr;}// Returns if there is any word in the trie// that starts with the given prefix.bool startsWith(string prefix) {TrieNode* tr = root;int len = prefix.length();for (int i = 0; i<len; ++i) {if (tr->next[prefix[i] - 'a'] == NULL)return false;tr = tr->next[prefix[i] - '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
原创粉丝点击