211. 添加与搜索单词 - 数据结构设计trie数的基本操作
Posted 幽殇默
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了211. 添加与搜索单词 - 数据结构设计trie数的基本操作相关的知识,希望对你有一定的参考价值。
https://leetcode-cn.com/problems/design-add-and-search-words-data-structure/
class WordDictionary {
public:
const static int N=50010;
int son[N][30];
int st[N];
int idx;
WordDictionary()
{
idx=0;
memset(son,0,sizeof son);
memset(st,0,sizeof st);
}
void addWord(string word) {
int p=0;
for(int i=0;i<word.size();i++)
{
int u=word[i]-'a';
if(!son[p][u]) son[p][u]=++idx;
p=son[p][u];
}
st[p]=true;
}
bool search(string word)
{
return dfs(0,word,0);
}
bool dfs(int p, string word, int i)
{
if (i == word.size()) return st[p];
else
{
if (word[i] != '.')
{
int u = word[i] - 'a';
if (!son[p][u]) return false;
return dfs(son[p][u], word, i + 1);
} else
{
for (int j = 0; j < 26; j ++)
if (son[p][j] && dfs(son[p][j], word, i + 1)) return true;
return false;
}
}
}
};
/**
* Your WordDictionary object will be instantiated and called as such:
* WordDictionary* obj = new WordDictionary();
* obj->addWord(word);
* bool param_2 = obj->search(word);
*/
以上是关于211. 添加与搜索单词 - 数据结构设计trie数的基本操作的主要内容,如果未能解决你的问题,请参考以下文章