17.go 798 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package main
  2. var mBtn = map[byte][]string{
  3. '2': {"a", "b", "c"},
  4. '3': {"d", "e", "f"},
  5. '4': {"g", "h", "i"},
  6. '5': {"j", "k", "l"},
  7. '6': {"m", "n", "o"},
  8. '7': {"p", "q", "r", "s"},
  9. '8': {"t", "u", "v"},
  10. '9': {"w", "x", "y", "z"},
  11. }
  12. func letterCombinationsIter(digits string, last []string) []string {
  13. if len(digits) == 0 {
  14. return last
  15. }
  16. res := make([]string, 0)
  17. char := mBtn[digits[0]]
  18. for _, v := range last {
  19. for _, c := range char {
  20. res = append(res, v+c)
  21. }
  22. }
  23. return letterCombinationsIter(digits[1:], res)
  24. }
  25. func letterCombinations(digits string) []string {
  26. if len(digits) == 0 {
  27. return []string{}
  28. }
  29. return letterCombinationsIter(digits[1:], mBtn[digits[0]])
  30. }
  31. /* func main() {
  32. fmt.Println(letterCombinations("23"))
  33. fmt.Println(letterCombinations("234"))
  34. }
  35. */