LeetCode 17. 电话号码的字母组合

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


示例:

输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].


这道题的难点主要就是首先你能将输入的号码对应的结果映射出来,最后通过递归的形式两两组合得出结果
let letterCombinations = (digits) => {  if (digits.length == 0) return [] //为空 情况  let map = ['', '', 'abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz']  let arr = digits.split('')  let resarr = arr.map(item => map[item])  if (resarr.length == 1) return resarr[0].split('')//仅输入一个 情况  let compute = (arr) => {//组合传入数组的前两项  ['ab','cd','ewe']    let temp = []         //['ac','ad','bc','bd']    // 将前两项组合结果放入临时数组中      for (let i = 0; i < arr[0].length; i++) {      for (let j = 0; j < arr[1].length; j++) {        temp.push(`${arr[0][i]}${arr[1][j]}`)      }    }    // [['ac','ad','bc','bd'],'ewe']    arr.splice(0, 2, temp)//将原来的数组前两项结果用临时数组替换    if (arr.length > 1) {      compute(arr)    }    return arr[0]  }  return compute(resarr)};

你也可以用这种哈希表的形式

 let map = { //你也可以用这种哈希表的形式    '2': 'abc',    '3': 'def',    '4': 'ghi',    '5': 'jkl',    '6': 'mno',    '7': 'pqrs',    '8': 'tuv',    '9': 'wxyz',  }

如果喜欢或者想要更多的信息,可以戳这里,欢迎star