实现一个 Trie,包含 insert
, search
, 和 startsWith
这三个方法。
样例
样例 1:
输入:
insert("lintcode")
search("lint")
startsWith("lint")
输出:
false
true
样例 2:
输入:
insert("lintcode")
search("code")
startsWith("lint")
startsWith("linterror")
insert("linterror")
search("lintcode)
startsWith("linterror")
输出:
false
true
false
true
true
注意事项
你可以认为所有的输入都是小写字母a-z。
class Trie {
public:
set<string> myset;
Trie() {
// do intialization if necessary
}
/*
* @param word: a word
* @return: nothing
*/
void insert(string &word) {
// write your code here
auto it = myset.find(word);
if(it == myset.end())
myset.insert(word);
}
/*
* @param word: A string
* @return: if the word is in the trie.
*/
bool search(string &word)
{
// write your code here
auto it = myset.find(word);
if(it == myset.end())
return false;
return true;
}
/*
* @param prefix: A string
* @return: if there is any word in the trie that starts with the given prefix.
*/
bool startsWith(string &prefix)
{
// write your code here
for(auto it = myset.begin(); it != myset.end(); it++)
{
// std::size_t found = it->find(prefix);
// if(found == 0)
// return true;
string tmp = *it;
std::size_t found = tmp.find(prefix);
if(found == 0)
return true;
//cout<<tmp<<endl;
}
return false;
}
};