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
| func letterCombinations(digits string) []string { if digits == "" { return []string{} }
letterMap := 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"}, }
cur := "" results := []string{} var dfs func(int)
dfs = func(i int) { if i == len(digits) { results = append(results, cur) return }
d := string(digits[i]) letters := letterMap[d]
for _, l := range letters { cur = cur + l dfs(i + 1) cur = string(cur[:len(cur) - 1]) } }
dfs(0)
return results }
|