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
| package main
func letterCombinations(digits string) []string { if len(digits) == 0 { return []string{} }
digitMap := map[byte]string{ '2': "abc", '3': "def", '4': "ghi", '5': "jkl", '6': "mno", '7': "pqrs", '8': "tuv", '9': "wxyz", }
var result []string var backtrack func(int, []byte)
backtrack = func(index int, path []byte) { if index == len(digits) { result = append(result, string(path)) return }
letters := digitMap[digits[index]] for _, char := range letters { path = append(path, byte(char)) backtrack(index+1, path) path = path[:len(path)-1] } }
backtrack(0, []byte{}) return result }
|