Date:2019-4-27


题目地址:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
电话号码的字母组合 - 图1
示例:
输入:

“23”

输出:

[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].

说明:
尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。

解题:

  1. /**
  2. * @param {string} digits
  3. * @return {string[]}
  4. */
  5. const KEY_MAP = {
  6. 2: 'abc',
  7. 3: 'def',
  8. 4: 'ghi',
  9. 5: 'jkl',
  10. 6: 'mno',
  11. 7: 'pqrs',
  12. 8: 'tuv',
  13. 9: 'wxyz',
  14. }
  15. const letterCombinations = digits => {
  16. if (!digits) {
  17. return []
  18. }
  19. const keys = digits.split('').map(num => KEY_MAP[num])
  20. // 设置默认值
  21. let res = ['']
  22. keys.forEach(item => {
  23. let next_res = []
  24. item.split('').forEach(key => {
  25. res.forEach(prevKey => {
  26. //设置当前的组合
  27. next_res.push(prevKey + key)
  28. })
  29. })
  30. res = next_res
  31. })
  32. return res
  33. }

做题目的:

九宫格输入法的简易实现