字母组合---排列组合问题
给定一个仅包含数字 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,但是要少用,原因是:
- index是字符串型的数字,不能进行几何运算
- index的顺序有可能不是数组的实际顺序
- 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的值没有发生改变,我不明白是为什么,感谢诸位在留言区给出解答,在下定当感激不尽
字母组合---排列组合问题相关推荐
- 算法 64式 17、排列组合算法整理
1算法思想 排列组合 1.1含义 排列: 含义:从元素列表中取出指定个数的元素进行排序 公式:从n个不同元素中取出m个元素的排列个数=n!/(n-m)! 组合: 含义:从元素列表中取出指定个数的元素, ...
- C#语法灵活运用之排列组合算法
今天群里有朋友求一个排列组合算法,题目是给定长度,输出所有指定字母的组合. 如指定字母a.b.c.d.e.f,长度为2,则结果应为:aa.ab.ac ... ef.ff. 有朋友给出算法,很有特色: ...
- java 穷举 排列组合,JavaScript递归穷举所有排列组合并找出重复值
null export default { data() { return { resultArr:[] } }, mounted(){ this.sss('aaba','abac'); this.s ...
- php 1到9加,php通过排列组合实现1到9数字相加都等于20的方法
摘要:本文实例讲述了php通过排列组合实现1到9数字相加都等于20的方法.分享给大家供大家参考.具体实现方法如下:<?php set_time_limit(0); /* 函数说明:huoqu_z ...
- 论排列组合,持续更新
今天刚好碰到了一个排列组合问题,因为之前对这方面的学习比较少,所以用的非常蠢的方法做了四位数中取三位的排列,写的程序太有局限性,源码如下 #define _CRT_SECURE_NO_WORNINGS ...
- 无重复字符串的排列组合
无重复字符串的排列组合.编写一种方法,计算某字符串的所有排列组合,字符串每个字符均不相同. 示例1: 输入:S = "qwe" 输出:["qwe", " ...
- 【牛客每日一题】4.16 逆序对 ( 数学 , 排列组合 ,快速幂 , 快速乘 )
[每日一题]逆序对 链接:https://ac.nowcoder.com/acm/problem/14731 来源:牛客网 题目描述 求所有长度为n的01串中满足如下条件的二元组个数: 设第i位和第j ...
- js 排列 组合 的一个简单例子
最近工作项目需要用到js排列组合,于是就写了一个简单的demo. 前几天在网上找到一个写全排列A(n,n)的code感觉还可以,于是贴出来了, 排列的实现方式: 全排列主要用到的是递归和数组的插入 比 ...
- 【数论】排列组合学习笔记
目录 简介 加原理和乘法原理 加法原理 乘法原理 两原理的区别 例子 排列 例子 简介 排列组合是组合数学中的一种.排列就是指从给定个数的元素中取出指定个数的元素进行排序:组合则是指从给定个数的元素中 ...
- .NET平台开源项目速览(11)KwCombinatorics排列组合使用案例(1)
阅读目录 1.KwCombinatorics基本介绍 2.足球彩票排列组合应用 3.排列组合生成代码与测试 今年上半年,我在KwCombinatorics系列文章中,重点介绍了KwCombinator ...
最新文章
- iOS下JS与OC互相调用(二)--WKWebView 拦截URL
- Revit二次开发示例:DeleteDimensions
- It's all about buffers: zero-copy, mmap and Java NIO
- [蓝桥杯2017初赛]Excel地址
- java使用迭代器删除元素_使用Java从地图中删除元素
- 深度学习目标检测之 YOLO v1
- 最强动画制作人书包_声优访谈丨恋与制作人动画中配声优访谈——夏磊
- AttributeError: 'dict' object has no attribute 'iteritems' python3报错
- ARM处理器基本指令大全
- 阿里线上bug排查命令
- 【Linux】Ubuntu输入法不能开机自启的解决方法
- 使用nameko框架实现Python项目微服务化
- 在反复的复习中给自己一点收益,一个机会,一些动力!
- PHP长方体体积,长方体体积公式
- RabbitMQ问题解决:TCP connection succeeded but Erlang distribution failed
- 迁徙数据平台简单介绍
- 方程组在原点附近解matlab,Matlab计算题:求解下列非线性方程组在原点附近的根: 9x^2 + 36y^2 + 4z^2 =36 X^2 -2y^2- 20z =0 16x –...
- 高通骁龙410e/APQ8016E嵌入式物联网模块芯片
- 技术总监灵魂一问:精通那么多技术,为何还是做不好一个项目?
- python画一颗小心心