电话号码的字母组合

164 阅读1分钟

leetcode-cn.com/problems/le…

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

17_telephone_keypad.png

function main(num) {
  const result = []
  const letters = [
    'abc',
    'def',
    'ghi',
    'jkl',
    'mno',
    'pqrs',
    'tuv',
    'wxyz'
  ]

  function getNumLetters(num) {
    return letters[num - 2]
  }

  function run(prvLetters, step) {
    if (step == num.length) {
      if (prvLetters.length > 0) {
        result.push(prvLetters)
      }
      return
    }
    const letters = getNumLetters(num[step])
    step += 1
    for (let i = 0; i < letters.length; i++) {
      run(prvLetters + letters[i], step)
    }

  }

  run('', 0)
  return result
}

console.log(main(''))