Add and Search Word
来源:互联网 发布:编程有什么用 编辑:程序博客网 时间:2024/05/16 07:19
Design a data structure that supports the following two operations:
void addWord(word)bool search(word)
search(word) can search a literal word or a regular expression string containing only letters a-z
or .
. A .
means it can represent any one letter.
For example:
addWord("bad")addWord("dad")addWord("mad")search("pad") -> falsesearch("bad") -> truesearch(".ad") -> truesearch("b..") -> true
Note:
You may assume that all words are consist of lowercase letters a-z
.
解题思路:
这道题的解法类似于Implement Trie (Prefix Tree),查找词时,单词中包含 .,所以需要使用dfs搜索。
代码:
class Word{public: bool isword; Word *child[26]; Word():isword(false) { for(int i = 0; i < 26; i ++) { child[i] = NULL; } }};class WordDictionary {public: /** Initialize your data structure here. */ WordDictionary() { root = new Word(); } /** Adds a word into the data structure. */ void addWord(string word) { Word *p = root; for(int i = 0; i < word.size(); i++) { int t = word[i] - 'a'; if(!p->child[t]) p->child[t] = new Word(); p = p->child[t]; } p->isword = true; } /** Returns if the word is in the data structure. A word could contain the dot character '.' to represent any one letter. */ bool dfs(Word *p, string word, int n) { if(n == word.size()) { return p->isword; } if(word[n] != '.') { int t = word[n] - 'a'; if(!p->child[t]) return false; p = p->child[t]; return dfs(p, word, n + 1); } else { for(int i = 0; i < 26; i++) { if(p->child[i] && dfs(p->child[i], word, n + 1)) return true; } return false; } } bool search(string word) { return dfs(root, word, 0); }private: Word *root;};
阅读全文
0 0
- add-and-search-word
- Add and Search Word
- Add and Search Word
- Add and Search Word
- [LintCode]Add and Search Word
- 211. Add and Search Word
- 211. Add and Search Word
- 211. Add and Search Word
- [LeetCode] Add and Search Word
- Leetcode211. Add and Search Word
- leetcode--Add and Search Word
- LeetCode211. Add and Search Word
- Add and Search Word - Data structure design
- Add and Search Word - Data structure design
- Add and Search Word - Data structure design
- Add and Search Word - Data structure design
- Add and Search Word - Data structure design
- Add and Search Word - Data structure design
- 【图示】30张图看懂中国金融体系
- PHP通配符问题
- Couldn't load this key(unable to open file)
- 线性丢番图方程的C++实现
- CRegKey操作注册表
- Add and Search Word
- FFMPEG视音频编解码学习笔记
- JDK1.8新特性测试☞排序
- 数据库性能问题诊断与分析
- Redis 发布与订阅(五)
- 极限学习机(ELM)的使用
- [leetcode]40. Combination Sum II(Java)
- HeadFirstPython---------(五)第七章(Web开发__集成在一起)
- CountDownTimer使用之页面即时跳转