给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。

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

示例:

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

说明:
尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。

/*** @param {string} digits* @return {string[]}*/
var letterCombinations = function(digits) {const maps = {2: "abc",3: "def",4: "ghi",5: "jkl",6: "mno",7: "pqrs",8: "tuv",9: "wxyz"}const res = [];for (let num of digits) {let w = maps[num];if (res.length > 0) {let tmp = []for(let i = 0; i < res.length; i++) {    //标记1for(let j = 1; j < w.length; j++) {tmp.push(res[i] + w[j])}res[i] += w[0]        //标记2}res.push(...tmp)} else {res.push(...w);}}return res;};

备注:
标记1处,
首先想到用for in 实现的,测试了,最后的结果也是正确的,但是看到资料说,for in可以用于数组,遍历数组的索引index,但是要少用,原因是:

  1. index是字符串型的数字,不能进行几何运算
  2. index的顺序有可能不是数组的实际顺序
  3. for in会遍历数组的所有的可以枚举的属性,包括原型上的

因此这里就没有用for in,但是for in更适合用来遍历对象。
为了防止其检索方法函数,可以在里面加一个if,如下:

for(let index in obj) {if(obj.hasOwnProperty(index)){//your code}
}

然后,这里想到用for of直接取数组中的值item,程序没有报错,但是结果有问题,就是在标记2出,写成item += w[0]时,用debugger调试,这一步运行了,但是对应的item的值没有发生改变,我不明白是为什么,感谢诸位在留言区给出解答,在下定当感激不尽

字母组合---排列组合问题相关推荐

  1. 算法 64式 17、排列组合算法整理

    1算法思想 排列组合 1.1含义 排列: 含义:从元素列表中取出指定个数的元素进行排序 公式:从n个不同元素中取出m个元素的排列个数=n!/(n-m)! 组合: 含义:从元素列表中取出指定个数的元素, ...

  2. C#语法灵活运用之排列组合算法

    今天群里有朋友求一个排列组合算法,题目是给定长度,输出所有指定字母的组合. 如指定字母a.b.c.d.e.f,长度为2,则结果应为:aa.ab.ac ... ef.ff. 有朋友给出算法,很有特色: ...

  3. java 穷举 排列组合,JavaScript递归穷举所有排列组合并找出重复值

    null export default { data() { return { resultArr:[] } }, mounted(){ this.sss('aaba','abac'); this.s ...

  4. php 1到9加,php通过排列组合实现1到9数字相加都等于20的方法

    摘要:本文实例讲述了php通过排列组合实现1到9数字相加都等于20的方法.分享给大家供大家参考.具体实现方法如下:<?php set_time_limit(0); /* 函数说明:huoqu_z ...

  5. 论排列组合,持续更新

    今天刚好碰到了一个排列组合问题,因为之前对这方面的学习比较少,所以用的非常蠢的方法做了四位数中取三位的排列,写的程序太有局限性,源码如下 #define _CRT_SECURE_NO_WORNINGS ...

  6. 无重复字符串的排列组合

    无重复字符串的排列组合.编写一种方法,计算某字符串的所有排列组合,字符串每个字符均不相同. 示例1: 输入:S = "qwe" 输出:["qwe", " ...

  7. 【牛客每日一题】4.16 逆序对 ( 数学 , 排列组合 ,快速幂 , 快速乘 )

    [每日一题]逆序对 链接:https://ac.nowcoder.com/acm/problem/14731 来源:牛客网 题目描述 求所有长度为n的01串中满足如下条件的二元组个数: 设第i位和第j ...

  8. js 排列 组合 的一个简单例子

    最近工作项目需要用到js排列组合,于是就写了一个简单的demo. 前几天在网上找到一个写全排列A(n,n)的code感觉还可以,于是贴出来了, 排列的实现方式: 全排列主要用到的是递归和数组的插入 比 ...

  9. 【数论】排列组合学习笔记

    目录 简介 加原理和乘法原理 加法原理 乘法原理 两原理的区别 例子 排列 例子 简介 排列组合是组合数学中的一种.排列就是指从给定个数的元素中取出指定个数的元素进行排序:组合则是指从给定个数的元素中 ...

  10. .NET平台开源项目速览(11)KwCombinatorics排列组合使用案例(1)

    阅读目录 1.KwCombinatorics基本介绍 2.足球彩票排列组合应用 3.排列组合生成代码与测试 今年上半年,我在KwCombinatorics系列文章中,重点介绍了KwCombinator ...

最新文章

  1. iOS下JS与OC互相调用(二)--WKWebView 拦截URL
  2. Revit二次开发示例:DeleteDimensions
  3. It's all about buffers: zero-copy, mmap and Java NIO
  4. [蓝桥杯2017初赛]Excel地址
  5. java使用迭代器删除元素_使用Java从地图中删除元素
  6. 深度学习目标检测之 YOLO v1
  7. 最强动画制作人书包_声优访谈丨恋与制作人动画中配声优访谈——夏磊
  8. AttributeError: 'dict' object has no attribute 'iteritems' python3报错
  9. ARM处理器基本指令大全
  10. 阿里线上bug排查命令
  11. 【Linux】Ubuntu输入法不能开机自启的解决方法
  12. 使用nameko框架实现Python项目微服务化
  13. 在反复的复习中给自己一点收益,一个机会,一些动力!
  14. PHP长方体体积,长方体体积公式
  15. RabbitMQ问题解决:TCP connection succeeded but Erlang distribution failed
  16. 迁徙数据平台简单介绍
  17. 方程组在原点附近解matlab,Matlab计算题:求解下列非线性方程组在原点附近的根: 9x^2 + 36y^2 + 4z^2 =36 X^2 -2y^2- 20z =0 16x –...
  18. 高通骁龙410e/APQ8016E嵌入式物联网模块芯片
  19. 技术总监灵魂一问:精通那么多技术,为何还是做不好一个项目?
  20. python画一颗小心心

热门文章

  1. Word删除空白页方法,由分节符导致多出空白页删除方法
  2. c语言sum求和程序,C语言实现的统计素数并求和代码分享
  3. HDU 2079 选课时间 组合题
  4. Cartographer 3D 建图实战-(基于禾赛32线雷达和Xsens MTi-G-710 组合导航模块,松灵Scout mini 底盘实际进行实验)
  5. 真香!微软办公环境大揭秘!
  6. 《缠中说禅108课》43:有关背驰的补习课
  7. 简历是html的怎么改成word文档,excel简历怎样转换为word文档
  8. JAVA 10.28.2017
  9. 苹果手机铃声制作教程
  10. 五款优秀重复文件查找工具