Golang Hashmap
golang\ntype MagicDictionary struct {\n\tneightbour map[string]int\n\torigin     map[string]int\n}\n\nfunc Constructor() MagicDictionary {\n\tm := MagicDictiona
```golang\ntype MagicDictionary struct {\n\tneightbour map[string]int\n\torigin     map[string]int\n}\n\nfunc Constructor() MagicDictionary {\n\tm := MagicDictionary{map[string]int{}, map[string]int{}}\n\treturn m\n}\n\nfunc (this *MagicDictionary) BuildDict(dictionary []string) {\n\tfor _, word := range dictionary {\n\t\tthis.origin[word]++\n\t\tfor i, _ := range word {\n\t\t\tt := []byte(word)\n\t\t\tt[i] = \'_\'\n\t\t\tthis.neightbour[string(t)]++\n\t\t}\n\t}\n}\n\nfunc (this *MagicDictionary) Search(searchWord string) bool {\n\tcnt := this.origin[searchWord]\n\tfor i, _ := range searchWord {\n\t\tt := []byte(searchWord)\n\t\tt[i] = \'_\'\n\t\tif cnt > 1 || this.neightbour[string(t)] > cnt {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n```
['Go']