| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | 
							- type Node struct {
 
- 	IsKey    bool
 
- 	Children *[26]Node
 
- }
 
- type WordDictionary struct {
 
- 	Root *Node
 
- }
 
- /** Initialize your data structure here. */
 
- func Constructor() WordDictionary {
 
- 	return WordDictionary{&Node{}}
 
- }
 
- /** Adds a word into the data structure. */
 
- func (this *WordDictionary) AddWord(word string) {
 
- 	curr := this.Root
 
- 	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 data structure. A word could contain the dot character '.' to represent any one letter. */
 
- func (this *WordDictionary) Search(word string) bool {
 
- 	return this.search(word, 0, this.Root)
 
- }
 
- func (this *WordDictionary) search(word string, i int, node *Node) bool {
 
- 	if i == len(word) {
 
- 		return node.IsKey
 
- 	} else if node.Children == nil {
 
- 		return false
 
- 	}
 
- 	if word[i] != '.' {
 
- 		return this.search(word, i+1, &node.Children[int(word[i]-'a')])
 
- 	}
 
- 	for j := 0; j < 26; j++ {
 
- 		if this.search(word, i+1, &node.Children[j]) {
 
- 			return true
 
- 		}
 
- 	}
 
- 	return false
 
- }
 
- /**
 
-  * Your WordDictionary object will be instantiated and called as such:
 
-  * obj := Constructor();
 
-  * obj.AddWord(word);
 
-  * param_2 := obj.Search(word);
 
-  */
 
 
  |