package phoneletters var digitToLetters = map[rune]string{ '2': "abc", '3': "def", '4': "ghi", '5': "jkl", '6': "mno", '7': "pqrs", '8': "tuv", '9': "wxyz", } func letterCombinations(digits string) []string { if digits == "" { return []string{} } combos := make([]string, 0, len(digits)*4) rest := letterCombinations(digits[1:]) if len(rest) == 0 { rest = []string{""} } letters := digitToLetters[rune(digits[0])] for _, letter := range letters { for _, r := range rest { combos = append(combos, string(letter)+r) } } return combos } func Combinations(digits string) []string { return letterCombinations(digits) }