Implement Trie (Prefix Tree)
来源:互联网 发布:御城河商家数据保镖 编辑:程序博客网 时间:2024/04/28 07:05
Implement a trie with insert
, search
, and startsWith
methods.
Note:
You may assume that all inputs are consist of lowercase letters a-z
.
class TrieNode {public: char value; bool isEnd; int count; vector<TrieNode*> children; TrieNode() : value(' '), isEnd(false), count(0) {} TrieNode(char ch) : value(ch), isEnd(false), count(0) {} TrieNode* subNode(char ch) { for (vector<TrieNode*>::iterator it = children.begin(); it != children.end(); it++) { if ((*it)->value == ch) { return *it; } } return NULL; } ~TrieNode() { for (vector<TrieNode*>::iterator it = children.begin(); it != children.end(); it++) { delete *it; } }};class Trie {public: Trie() { root = new TrieNode(); } // Inserts a word into the trie. void insert(string word) { if (search(word)) { return; } TrieNode *curr = root; for (int i = 0; i < word.length(); i++) { TrieNode *child = curr->subNode(word[i]); if (child == NULL) { TrieNode *temp = new TrieNode(word[i]); curr->children.push_back(temp); curr = temp; } else { curr = child; } curr->count++; } curr->isEnd = true; } // Returns if the word is in the trie. bool search(string word) { TrieNode *curr = root; for (int i = 0; i < word.length(); i++) { curr = curr->subNode(word[i]); if (curr == NULL) { return false; } } return curr->isEnd; } // Returns if there is any word in the trie // that starts with the given prefix. bool startsWith(string prefix) { TrieNode *curr = root; for (int i = 0; i < prefix.length(); i++) { curr = curr->subNode(prefix[i]); if (curr == NULL) { return false; } } return true; } ~Trie() { delete root; }private: TrieNode* root;};// Your Trie object will be instantiated and called as such:// Trie trie;// trie.insert("somestring");// trie.search("key");
0 0
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Implement Trie (Prefix Tree)
- Java的swing编程(一)
- 电脑光标总是失去焦点解决方法
- hdu 5182 PM2.5
- hdu 5146 Sequence
- Java追加文件内容的三种方法
- Implement Trie (Prefix Tree)
- 调多线程中的消息发送
- 龟兔赛跑_java_HDU2059
- 数塔_java_HDU2084
- hdu 4989 Summary
- IDNLoopView 图片/视图循环播放控件
- Matlab优化问题04_2—linprog(高级)
- cannot open Debug/*.exe for writing
- error C2440: 'static_cast' : cannot convert from 'void (__thiscall CChatDlg::* )(WPARAM,LPARAM)' to