网站竞争对手分析,wordpress账户,成都企业网站开发,建设企业网站的需求分析前缀树
208. 实现 Trie (前缀树)
Trie#xff08;发音类似 “try”#xff09;或者说 前缀树 是一种树形数据结构#xff0c;用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景#xff0c;例如自动补完和拼写检查。
请你实现 Trie 类#xff1a…前缀树
208. 实现 Trie (前缀树)
Trie发音类似 “try”或者说 前缀树 是一种树形数据结构用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景例如自动补完和拼写检查。
请你实现 Trie 类
Trie() 初始化前缀树对象。 void insert(String word) 向前缀树中插入字符串 word 。 boolean search(String word) 如果字符串 word 在前缀树中返回 true即在检索之前已经插入否则返回 false 。 boolean startsWith(String prefix) 如果之前已经插入的字符串 word 的前缀之一为 prefix 返回 true 否则返回 false 。
示例
输入 [“Trie”, “insert”, “search”, “search”, “startsWith”, “insert”, “search”] [[], [“apple”], [“apple”], [“app”], [“app”], [“app”], [“app”]] 输出 [null, null, true, false, true, null, true]
解释 Trie trie new Trie(); trie.insert(“apple”); trie.search(“apple”); // 返回 True trie.search(“app”); // 返回 False trie.startsWith(“app”); // 返回 True trie.insert(“app”); trie.search(“app”); // 返回 True
class Trie {
private:vectorTrie* children;bool isEnd;Trie* searchPrefix(string prefix) {Trie* node this;for (char ch : prefix) {ch - a;if (node-children[ch]nullptr) {return nullptr;}node node-children[ch];}return node;}public:Trie() : children(26), isEnd(false) {}void insert(string word) {Trie* node this;for (char ch : word) {ch - a;if (node-children[ch]nullptr) {node-children[ch] new Trie();}node node-children[ch];}node-isEnd true;}bool search(string word) {Trie* node this-searchPrefix(word);return node ! nullptr node-isEnd;}bool startsWith(string prefix) {return this-searchPrefix(prefix) ! nullptr;}
};/*** 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);*/