Design a data structure that supports the following two operations: addWord(word) and 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.
Notice

You may assume that all words are consist of lowercase letters a-z.
Example

addWord("bad")
addWord("dad")
addWord("mad")
search("pad")  // return false
search("bad")  // return true
search(".ad")  // return true
search("b..")  // return true

LeetCode上的原题,请参见我之前的博客Add and Search Word - Data structure design

class WordDictionary {
public:
struct TrieNode {
bool isLeaf;
TrieNode *child[];
}; WordDictionary() {
root = new TrieNode();
} // Adds a word into the data structure.
void addWord(string word) {
TrieNode *p = root;
for (char c : word) {
int i = c - 'a';
if (!p->child[i]) p->child[i] = new TrieNode();
p = p->child[i];
}
p->isLeaf = true;
} // Returns if the word is in the data structure. A word could
// contain the dot character '.' to represent any one letter.
bool search(string word) {
search(word, root, );
} bool search(string &word, TrieNode *p, int i) {
if (i == word.size()) return p->isLeaf;
if (word[i] == '.') {
for (auto a : p->child) {
if (a && search(word, a, i + )) return true;
}
return false;
} else {
return p->child[word[i] - 'a'] && search(word, p->child[word[i] - 'a'], i + );
}
} private:
TrieNode *root;
};

最新文章

  1. 利用IFormattable接口自动参数化Sql语句
  2. Bag-of-words模型
  3. SQL2005中的事务与锁定(二)- 转载
  4. 解决Ajax跨域问题:Origin xx is not allowed by Access-Control-Allow-Origin.
  5. Linux本地无法登录,远程却可以登录
  6. Nodejs in Visual Studio Code 04.Swig模版
  7. Paint House II 解答
  8. 使用javascript把图片转成base64位编码,然后传送到服务端(ajax调用的接口基于drupa7)
  9. Android开发之获取xml文件的输入流对象
  10. 跨进程的mutex
  11. 梳理vue双向绑定的实现原理
  12. openWRT报错
  13. H5-meta标签使用大全
  14. linux 安装mysql5.7.25
  15. 二十二、Linux 进程与信号---进程创建(续)
  16. Centos 7 搭建.net web项目
  17. [python,2018-01-15] 冒泡法排序
  18. 自动构建工具Grunt
  19. Application HookMainWindow
  20. Redis(一)-- 基础

热门文章

  1. Activity有四种加载模式(转)
  2. 使用Aspose.Cell.dll导出Excel总结
  3. oc中定时器的基本使用
  4. 智能车学习(八)——菜单的实现
  5. 在 SQL Server 中查询EXCEL 表中的数据遇到的各种问题
  6. 编解码-protobuf
  7. mongodb学习01介绍
  8. 移动网站中,用canvas,svg比用图片好?
  9. Pick-up sticks[HDU1147]
  10. Storm on Yarn :原理分析+平台搭建