Add and Search Word
来源:互联网 发布:java 调用wireshark 编辑:程序博客网 时间:2024/04/29 13:00
题目描述:
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
.
AC代码如下(时间:85ms
class TrieNode {public:// Initialize your data structure here.TrieNode(){m_isWord = false;for (int i = 0; i < 26; ++i){next[i] = NULL;}}void setIsWord(bool isWord){m_isWord = isWord;}bool getIsWord(void){return m_isWord;}public:bool m_isWord;TrieNode* next[26];};class WordDictionary {public:WordDictionary(){root = new TrieNode();}// Adds a word into the data structure.void addWord(string word) {int len = word.length();if (len == 0) return;TrieNode* p = root;for (int i = 0; i < len; ++i){if (p->next[word[i] - 'a'] == NULL){p->next[word[i] - 'a'] = new TrieNode();p = p->next[word[i] - 'a'];}else{p = p->next[word[i] - 'a'];}}p->setIsWord(true);}bool search(string word){return search(word, 0, root);}// Returns if the word is in the data structure. A word could// contain the dot character '.' to represent any one letter.bool search(const string& word,int curIndex,TrieNode* curNode) {if (curIndex == word.length()) return curNode->getIsWord();if (word[curIndex] == '.'){bool res = false;for (int i = 0; i < 26; ++i){if (curNode->next[i] != NULL){res = search(word, curIndex + 1, curNode->next[i]);if (res) return true;}}return false;}else{if (curNode->next[word[curIndex] - 'a'] != NULL){return search(word, curIndex + 1, curNode->next[word[curIndex] - 'a']);}else{return false;}}}private:TrieNode* 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
- Python面向对象编程基础
- Ubuntu14.04交叉编译BusyBox
- 剖析轻量级消息中间件ActiveMQ
- ZOJ1047-Image Perimeters
- mysql-5.6-win32免安装版配置
- Add and Search Word
- jQuery-DOM节点的插入
- subarray、subsequence的区别
- 设计模式之中介者模式
- HDU 1863 畅通工程
- 2.ionic系列之ionic开发环境搭建(一)
- php常用函数-数组
- 转载海科SEO-探秘qq空间seo设置
- Android系统架构