标签:node ch word 前缀 Trie child Leetcode 字典
前缀树(字典树)及Leetcode相关题目
前缀树的实现(C++)
class Trie{
private:
vector<Trie*> child;
bool isEnd;
public:
Trie(): child(26), isEnd(false) {}
void insert(string &word) {
Trie* node = this;
for (auto ch : word) {
if (node->child[ch-'a'] == nullptr) {
node->child[ch-'a'] = new Trie();
}
node = node->child[ch-'a'];
}
node->isEnd = true;
}
// 检索单词word是否在前缀树中
bool search(string &word) {
Trie* node = this;
for (auto ch : word) {
if (node->child[ch-'a'] == nullptr) {
return false;
}
node = node->child[ch-'a'];
}
return node->isEnd;
}
// 给定一个前缀prefix,查询前缀树中是否有单词以prefix为开头
bool startsWith(string &prefix) {
Trie* node = this;
for (auto ch : prefix) {
if (node->child[ch-'a'] == nullptr) {
return false;
}
node = node->child[ch-'a'];
}
return true;
}
}
Leetcode相关题目(待续):
208.实现前缀树
648.替换单词
676.神奇的字典
820.最短的单词编码
677.单词之和
421.最大的异或
-
一个32位二进制数,右移
i
位再与1相与就能得到右数第i + 1
位的数字。以8位二进制数为例,127的补码为
0111 1111
,右移6位为0000 0001
,然后和1做与运算,得到0000 0001
也就是1,就是127的右数第7位数字为1。即127 >> 6 & 1
结果为1
。 -
此题的前缀树是一个高度为32的二叉树,孩子只有 0 和 1 两种选择。
标签:node,ch,word,前缀,Trie,child,Leetcode,字典 来源: https://www.cnblogs.com/lafiteee/p/16208123.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。