1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| package main
import "fmt" import "strings"
var nums map[string][]string = map[string][]string{ "2": {"a", "b", "c"}, "3": {"d", "e", "f"}, "4": {"g", "h", "i"}, "5": {"j", "k", "l"}, "6": {"m", "n", "o"}, "7": {"p", "q", "r", "s"}, "8": {"t", "u", "v"}, "9": {"w", "x", "y", "z"}, }
func letterCombinations(digits string) []string { ds := strings.Split(digits, "") var prepare [][]string
for _, d := range ds { temp := []string{}
for _, v := range nums[d] { temp = append(temp, v) }
prepare = append(prepare, temp) }
if len(prepare) == 0 { return []string{} }
var result []string result = []string{""}
for i := 0; i < len(prepare); i++ { result = crossJoin(result, prepare[i]) }
return result }
func crossJoin(strs1 []string, strs2 []string) []string { var result []string
for _, v1 := range strs1 { for _, v2 := range strs2 { result = append(result, (v1 + v2)) } }
return result }
func main() { fmt.Println(letterCombinations("234")) }
|