[LintCode] Add and Search Word 添加和查找单词
2024-08-27 17:35:03
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;
};
最新文章
- 利用IFormattable接口自动参数化Sql语句
- Bag-of-words模型
- SQL2005中的事务与锁定(二)- 转载
- 解决Ajax跨域问题:Origin xx is not allowed by Access-Control-Allow-Origin.
- Linux本地无法登录,远程却可以登录
- Nodejs in Visual Studio Code 04.Swig模版
- Paint House II 解答
- 使用javascript把图片转成base64位编码,然后传送到服务端(ajax调用的接口基于drupa7)
- Android开发之获取xml文件的输入流对象
- 跨进程的mutex
- 梳理vue双向绑定的实现原理
- openWRT报错
- H5-meta标签使用大全
- linux 安装mysql5.7.25
- 二十二、Linux 进程与信号---进程创建(续)
- Centos 7 搭建.net web项目
- [python,2018-01-15] 冒泡法排序
- 自动构建工具Grunt
- Application HookMainWindow
- Redis(一)-- 基础