211. Add and Search Word - Data structure design LeetCode
来源:互联网 发布:淘宝hd登录失败api 编辑:程序博客网 时间:2024/05/27 09:47
题意:设计一种数据结构,能插入单词,然后查询单词,查询支持模糊查询,.代表一个任何字母。
题解:用trie树存,查找的时候遇到.就递归的去查。
class TrieNode{public: bool isword; char var; TrieNode* children[26]; TrieNode() { var = 0; isword = false; memset(children,0x0,sizeof(children)); } TrieNode(char c) { var = c; isword = false; memset(children,0x0,sizeof(children)); }};class WordDictionary {public: WordDictionary() { root = new TrieNode(); } // Adds a word into the data structure. void addWord(string word) { TrieNode* tmp = root; int n = word.length(); for(int i = 0; i < n; i++) { char c = word[i]; if(tmp->children[c - 'a'] == 0) { TrieNode* x = new TrieNode(c); tmp->children[c - 'a'] = x; } tmp = tmp->children[c - 'a']; } tmp->isword = true; } // Returns if the word is in the data structure. A word could // contain the dot character '.' to represent any one letter. bool search(TrieNode* head,string word) { if(word.length() == 1) { if(word[0] == '.') { bool flag = false; for(int i = 0; i < 26;i++) if(head->children[i] != 0) flag |= head->children[i]->isword; return flag; } else { if(head->children[word[0] - 'a'] != 0 && head->children[word[0] - 'a']->isword) return true; else return false; } } if(word[0] == '.') { bool flag = false; for(int i = 0; i < 26;i++) if(head->children[i] != 0) flag |= search(head->children[i],word.substr(1)); return flag; } else { if(head->children[word[0] - 'a'] == 0) return false; else return search(head->children[word[0] - 'a'],word.substr(1)); } } bool search(string word) { return search(root,word); }private: TrieNode* root = new TrieNode();};
0 0
- [leetcode] 211.Add and Search Word - Data structure design
- LeetCode 211. Add and Search Word - Data structure design
- [Leetcode]211. Add and Search Word - Data structure design @python
- Leetcode 211. Add and Search Word - Data structure design
- 211. Add and Search Word - Data structure design LeetCode
- leetcode 211. Add and Search Word - Data structure design
- LeetCode 211. Add and Search Word - Data structure design
- Leetcode 211. Add and Search Word - Data structure design
- Leetcode 211. Add and Search Word - Data structure design
- LeetCode-211.Add and Search Word - Data structure design
- Leetcode 211. Add and Search Word - Data structure design
- LeetCode 211 - Add and Search Word - Data structure design
- LeetCode Add and Search Word - Data structure design
- Leetcode Add and Search Word - Data structure design
- leetcode:Add and Search Word - Data structure design
- [leetcode]Add and Search Word - Data structure design
- [LeetCode] Add and Search Word - Data structure design
- leetcode #211 Add and Search Word - Data structure design
- HDU-1264 Counting Squares(矩形面积并模板)
- 找工作-简历
- 如何在web页面中,实现耗时操作的后台执行?多线程吗?
- ViewPager 滚动界面 类似微信布局
- Android图片缩放
- 211. Add and Search Word - Data structure design LeetCode
- Hive报错整理02
- KETTLE远程执行任务
- jstorm源码分析:提交任务过程
- 找最值
- 设计模式C++学习笔记之十五(Composite组合模式)
- 浅谈面向对象编程之接口
- 机器学习
- Linux Shell命令(不定时更新)