Skip to content

Latest commit

 

History

History
59 lines (48 loc) · 1.38 KB

17.letter-combinations-of-a-phone-number.md

File metadata and controls

59 lines (48 loc) · 1.38 KB

题目地址

https://leetcode.com/problems/letter-combinations-of-a-phone-number/

题目描述

Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent.

A mapping of digit to letters (just like on the telephone buttons) is given below. Note that 1 does not map to any letters.

Example:
Input: "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

Note:
Although the above answer is in lexicographical order, your answer could be in any order you want.

思路

关键点解析

代码

JavaScript Code

/**
 * @param {string} digits
 * @return {string[]}
 */
var letterCombinations = function (digits) {
  if (!digits) return []

  let map = ['', 1, 'abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz']
  let code = []
  digits.split('').forEach(item => {
    if (map[item]) {
      code.push(map[item])
    }
  })

  let comb = (arr) => {
    let tmp = []
    for (let i = 0, il = arr[0].length; i < il; i++) {
      for (let j = 0, jl = arr[1].length; j < jl; j++) {
        tmp.push(`${arr[0][i]}${arr[1][j]}`)
      }
    }
    arr.splice(0, 2, tmp)
    if (arr.length > 1) {
      comb(arr)
    } else {
      return tmp
    }
    return arr[0]
  }

  return code.length > 1 ? comb(code) : code[0].split('')
};