type Trie struct {
isKey bool
childrenNode [26]*Trie
}
/** Initialize your data structure here. */
func Constructor() Trie {
var Tnode Trie
Tnode.isKey = false
for i:=0;i<26;i++{
Tnode.childrenNode[i] = nil
}
return Tnode
}
/** Inserts a word into the trie. */
func (this *Trie) Insert(word string) {
for i:=0;i<len(word);i++{
if((*this).childrenNode[word[i] - 'a'] == nil){
temp:=Constructor()
(*this).childrenNode[word[i] - 'a']=&temp
}
this = (*this).childrenNode[word[i] - 'a']
}
(*this).isKey = true
}
/** Returns if the word is in the trie. */
func (this *Trie) Search(word string) bool {
for i:=0;i<len(word);i++{
if((*this).childrenNode[word[i] - 'a']==nil){
return false
}
this = (*this).childrenNode[word[i] - 'a']
}
if( (*this).isKey == true){
return true
}else{
return false
}
}
/** Returns if there is any word in the trie that starts with the given prefix. */
func (this *Trie) StartsWith(prefix string) bool {
for i:=0;i<len(prefix);i++{
if((*this).childrenNode[prefix[i] - 'a']==nil){
return false
}
this = (*this).childrenNode[prefix[i] - 'a']
}
return true
}
/**
* Your Trie object will be instantiated and called as such:
* obj := Constructor();
* obj.Insert(word);
* param_2 := obj.Search(word);
* param_3 := obj.StartsWith(prefix);
*/