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

栏目: 数据库 · 发布时间: 7年前

内容简介:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。示例:

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》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

数据挖掘导论

数据挖掘导论

Pang-Ning Tan、Michael Steinbach、Vipin Kumar / 范明、范宏建 / 人民邮电出版社 / 2010-12-10 / 69.00元

本书全面介绍了数据挖掘,涵盖了五个主题:数据、分类、关联分析、聚类和异常检测。除异常检测外,每个主题都有两章。前一章涵盖基本概念、代表性算法和评估技术,而后一章讨论高级概念和算法。这样读者在透彻地理解数据挖掘的基础的同时,还能够了解更多重要的高级主题。 本书是明尼苏达大学和密歇根州立大学数据挖掘课程的教材,由于独具特色,正式出版之前就已经被斯坦福大学、得克萨斯大学奥斯汀分校等众多名校采用。 ......一起来看看 《数据挖掘导论》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

在线进制转换器
在线进制转换器

各进制数互转换器

html转js在线工具
html转js在线工具

html转js在线工具