LeetCode-电话号码的字母组合(No.17) 递归+hash

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

给定一个仅包括数字 2-9 的字符串,返回一切它能示意的字母组合。给出数字到字母的映照以下(与电话按键雷同)。
注重 1 不对应任何字母。

《LeetCode-电话号码的字母组合(No.17) 递归+hash》
示例:

输入:”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

扫一扫

《LeetCode-电话号码的字母组合(No.17) 递归+hash》

往期文章

    原文作者:Love_Life
    原文地址: https://segmentfault.com/a/1190000019091393
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞