Implement Trie (Prefix Tree) Solutions in Go
Number 208
Difficulty Medium
Acceptance 49.5%
Link LeetCode
Other languages C++
Solutions
Go solution by halfrost/LeetCode-Go
package leetcodetype Trie struct {isWord boolchildren map[rune]*Trie}/** Initialize your data structure here. */func Constructor208() Trie {return Trie{isWord: false, children: make(map[rune]*Trie)}}/** Inserts a word into the trie. */func (this *Trie) Insert(word string) {parent := thisfor _, ch := range word {if child, ok := parent.children[ch]; ok {parent = child} else {newChild := &Trie{children: make(map[rune]*Trie)}parent.children[ch] = newChildparent = newChild}}parent.isWord = true}/** Returns if the word is in the trie. */func (this *Trie) Search(word string) bool {parent := thisfor _, ch := range word {if child, ok := parent.children[ch]; ok {parent = childcontinue}return false}return parent.isWord}/** Returns if there is any word in the trie that starts with the given prefix. */func (this *Trie) StartsWith(prefix string) bool {parent := thisfor _, ch := range prefix {if child, ok := parent.children[ch]; ok {parent = childcontinue}return false}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);*/