| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | type Node struct {	IsKey bool	Children *[26]Node}type Trie struct {	Root *Node}/** Initialize your data structure here. */func Constructor() Trie {	return Trie{&Node{}}}/** Inserts a word into the trie. */func (this *Trie) Insert(word string)  {	curr := this.Root	var i int	for i = range word {		if curr.Children == nil {			curr.Children = &[26]Node{}		}		curr = &curr.Children[int(word[i]-'a')]	}	curr.IsKey = true}/** Returns if the word is in the trie. */func (this *Trie) Search(word string) bool {	curr := this.Root	var i int	for i = range word {		if curr.Children == nil {			return false		}		curr = &curr.Children[int(word[i]-'a')]	}	return curr.IsKey}/** Returns if there is any word in the trie that starts with the given prefix. */func (this *Trie) StartsWith(prefix string) bool {	curr := this.Root	for i := range prefix {		if curr.Children == nil {			return false		}		curr = &curr.Children[int(prefix[i]-'a')]	}	return curr.IsKey || curr.Children != nil}/** * 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); */
 |