leetcode208
class TrieNode {
public:
// Initialize your data structure here.
TrieNode() {
words=;
prefixs=;
for(int i=;i<;i++)
edges[i]=NULL;
}
int words;
int prefixs;
TrieNode* edges[];
};
class Trie {
public:
Trie() {
root = new TrieNode();
}
// Inserts a word into the trie.
void insert(string word) {
insertHelper(root,word,);
}
// Returns if the word is in the trie.
bool search(string word) {
return searchHelper(root,word,)!=;
}
// Returns if there is any word in the trie
// that starts with the given prefix.
bool startsWith(string prefix) {
return startsWithHelper(root,prefix,)!=;
}
void insertHelper(TrieNode * node,string &word,int pos) {
if(pos==word.size())
{
node->words++;
node->prefixs++;
}
else
{
node->prefixs++;
int char_code=word[pos]-'a';
if(node->edges[char_code]==NULL)
node->edges[char_code]=new TrieNode();
insertHelper(node->edges[char_code],word,pos+);
}
}
int searchHelper(TrieNode * node,string &word,int pos)
{
int char_code=word[pos]-'a';
if(pos==word.size())
return node->words;
else if(node->edges[char_code]==NULL)
return ;
else
return searchHelper(node->edges[char_code],word,pos+);
}
int startsWithHelper(TrieNode * node,string &word,int pos)
{
int char_code=word[pos]-'a';
if(pos==word.size())
return node->prefixs;
else if(node->edges[char_code]==NULL)
return ;
else
return startsWithHelper(node->edges[char_code],word,pos+);
}
private:
TrieNode* root;
};
/**
* Your Trie object will be instantiated and called as such:
* Trie obj = new Trie();
* obj.insert(word);
* bool param_2 = obj.search(word);
* bool param_3 = obj.startsWith(prefix);
*/
补充一个python的实现:
class TrieNode:
def __init__(self):
self.words = 0
self.prefixs = 0
self.edges = [None] * 26 class Trie:
def __init__(self):
self.root = TrieNode() def insert(self,word):
self.insertHelper(self.root,word,0) def search(self,word):
return self.searchHelper(self.root,word,0) != 0 def startsWith(self,prefix):
return self.startsWithHelper(self.root,prefix,0) != 0 def insertHelper(self,node,word,pos):
if pos == len(word):
node.words += 1
node.prefixs += 1
else:
node.prefixs += 1
char_code = ord(word[pos]) - 97
if node.edges[char_code] == None:
node.edges[char_code] = TrieNode()
self.insertHelper(node.edges[char_code],word,pos+1) def searchHelper(self,node,word,pos):
if pos == len(word):
return node.words
else:
char_code = ord(word[pos]) - 97
if node.edges[char_code] == None:
return 0
else:
return self.searchHelper(node.edges[char_code],word,pos+1) def startsWithHelper(self,node,word,pos):
if pos == len(word):
return node.prefixs
else:
char_code = ord(word[pos]) - 97
if node.edges[char_code] == None:
return 0
else:
return self.startsWithHelper(node.edges[char_code],word,pos+1)
leetcode208的更多相关文章
- leetcode208 happynumber
19 is a happy number 12 + 92 = 82 82 + 22 = 68 62 + 82 = 100 12 + 02 + 02 = 1 class Solution {public ...
- [Swift]LeetCode208. 实现 Trie (前缀树) | Implement Trie (Prefix Tree)
Implement a trie with insert, search, and startsWith methods. Example: Trie trie = new Trie(); trie. ...
- LeetCode208:Implement Trie (Prefix Tree)
Implement a trie with insert, search, and startsWith methods. Note: You may assume that all inputs a ...
- Leetcode208. Implement Trie (Prefix Tree)实现Trie(前缀树)
实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作. 示例: Trie trie = new Trie(); trie.insert(" ...
- LeetCode208 Implement Trie (Prefix Tree). LeetCode211 Add and Search Word - Data structure design
字典树(Trie树相关) 208. Implement Trie (Prefix Tree) Implement a trie with insert, search, and startsWith ...
随机推荐
- python学习 day13 迭代器,生成器,枚举对象
一.复习 1.闭包:定义在函数内部的函数(被函数嵌套的函数) 2.装饰器:闭包的一个应用场景 -- 为一个函数添加新功能的工具 3.开放封闭原则:不能修改源代码,不能修改调用方式,但可以对外提供增加新 ...
- wpf-x命名空间-Markup Extension(标记扩展)
1.x:type 用于前端类型声明 与C# 代码 Type类似 2.x:Null 代表Null 某些时候需要显示的为一些值设置为空 前端为 x:Null C# 中 为 Null 3.x:ar ...
- rod cutting
for a rod of length i the price of it si pi,to cut the rod to earn more money package dynamic_progra ...
- RPi 3B Aduio 3.5mm output
/********************************************************************** * RPi 3B Aduio 3.5mm output ...
- PTA——完全数
PTA 7-45 找完数 网友“云上明月”的程序: #include<stdio.h> int isPerfect(int num); int main() { ; int maxFact ...
- angular6新建项目
mkdir angular6project cd angular6project ng new demo 新建一个普通项目 ng new demo --routing 新建一个带路由的项 ...
- 在html中做表格以及给表格设置高宽字体居中和表格线的粗细
今天学习了如何用HTML在网页上做表格,对于我这种横列部分的属实有点麻烦,不过在看着表格合并单过格的时候我把整个表格看做代码就容易多了. 对于今天的作业让我学习了更多的代码,对于代码的应用希望更加熟练 ...
- 导入导出Oracle
- zabbix之 自定义内存使用率监控报警
配置zabbix当内存剩余不足15%的时候触发报警 zabbix默认的剩余内存报警:Average Lack of available memory on server {HOST.NAME}{T ...
- python实现Content-Type类型为application/x-www-form-urlencoded发送POST请求
周日晚上接到公司的电话需要通过新榜的接口拿下微博热搜数据,拿到接口文档看了下很简单的一个post请求,主要根据时间段来获取热搜数据. 在实际编码的过程中经常遇到header的Content-Type的 ...