JS实现电话号码的字母组合算法示例


Posted in Javascript onFebruary 26, 2019

本文实例讲述了JS实现电话号码的字母组合算法。分享给大家供大家参考,具体如下:

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

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

JS实现电话号码的字母组合算法示例

示例:

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

说明:

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

var letterCombinations = function(digits) {
  const mappings = {
    '2': ['a', 'b', 'c'],
    '3': ['d', 'e', 'f'],
    '4': ['g', 'h', 'i'],
    '5': ['j', 'k', 'l'],
    '6': ['m', 'n', 'o'],
    '7': ['p', 'q', 'r', 's'],
    '8': ['t', 'u', 'v'],
    '9': ['w', 'x', 'y', 'z']
  };
  if (!digits || digits.length === 0) return [];
  if (digits.length === 1) {
    return mappings[digits];
  }
  let result = [];
  let set1 = letterCombinations(digits.substr(0, 1));
  let set2 = letterCombinations(digits.substr(1));
  for (let i = 0; i < set1.length; i++) {
    for (let j = 0; j < set2.length; j++) {
    result.push(set1[i] + set2[j]);
    }
  }
  return result;
  };
console.log(letterCombinations('23'))
var letterCombinations1 = function(digits) {
 var map = {
 "2": ["a", "b", "c"],
 "3": ["d", "e", "f"],
 "4": ["g", "h", "i"],
 "5": ["j", "k", "l"],
 "6": ["m", "n", "o"],
 "7": ["p", "q", "r", "s"],
 "8": ["t", "u", "v"],
 "9": ["w", "x", "y", "z"]
 };
 var rtn = map[digits[0]];
 digits = digits.substr(1);
 digits.split("").forEach(function(digit) {
 var t = [];
 map[digit].forEach(function(letter) {
  t = t.concat(rtn.map(function(item) {
  return item + letter;
  }));
 });
 rtn = t;
 });
 return rtn === undefined ? [] : rtn;
};
console.log(letterCombinations1('32'))

使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码,可得如下运行结果:

JS实现电话号码的字母组合算法示例

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
Javascript &amp; DHTML 实例编程(教程)(三)初级实例篇1—上传文件控件实例
Jun 02 Javascript
js data日期初始化的5种方法
Dec 29 Javascript
Javascript原型链和原型的一个误区
Oct 22 Javascript
JS的框架Polymer中的dom-if和is属性使用说明
Jul 29 Javascript
jQuery焦点图轮播特效代码分享(3款)
Sep 05 Javascript
jQuery和hwSlider实现内容响应式可触控滑动切换效果附源码下载(二)
Jun 22 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
Sep 01 Javascript
浅谈vue项目如何打包扔向服务器
May 08 Javascript
深入理解JS异步编程-Promise
Jun 03 Javascript
vue props 单项数据流实例分享
Feb 16 Javascript
简单了解vue 插值表达式Mustache
Jul 22 Javascript
Javascript新手入门之字符串拼接与变量的应用
Dec 03 Javascript
JS实现的合并两个有序链表算法示例
Feb 25 #Javascript
JS实现判断有效的数独算法示例
Feb 25 #Javascript
js实现通过开始结束控制的计时器
Feb 25 #Javascript
js实现倒计时器自定义时间和暂停
Feb 25 #Javascript
JS module的导出和导入的实现代码
Feb 25 #Javascript
js实现多个倒计时并行 js拼团倒计时
Feb 25 #Javascript
js实现网页同时进行多个倒计时功能
Feb 25 #Javascript
You might like
PHP提交表单失败后如何保留已经填写的信息
2014/06/20 PHP
一个经典的PHP文件上传类分享
2014/11/18 PHP
全新Mac配置PHP开发环境教程
2016/02/03 PHP
PHP实现适用于文件内容操作的分页类
2016/06/15 PHP
php微信开发之带参数二维码的使用
2016/08/03 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
让whoops帮我们告别ThinkPHP6的异常页面
2020/03/02 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
asp.net下利用js实现返回上一页的实现方法小集
2009/11/24 Javascript
$.get获取一个文件的内容示例代码
2013/09/11 Javascript
网页右下角弹出窗体实现代码
2014/06/05 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
jQuery中用on绑定事件时需注意的事项
2017/03/19 Javascript
浅谈React组件之性能优化
2018/03/02 Javascript
详解在Angular4中使用ng2-baidu-map的方法
2019/06/19 Javascript
js实现跟随鼠标移动的小球
2019/08/26 Javascript
在Vue mounted方法中使用data变量详解
2019/11/05 Javascript
Python编写的com组件发生R6034错误的原因与解决办法
2013/04/01 Python
Python的gevent框架的入门教程
2015/04/29 Python
深入解析Python编程中JSON模块的使用
2015/10/15 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
2018/07/27 Python
对python实现合并两个排序链表的方法详解
2019/01/23 Python
Python/Django后端使用PIL Image生成头像缩略图
2019/04/30 Python
pytorch中获取模型input/output shape实例
2019/12/30 Python
CSS3 Flex 弹性布局实例代码详解
2018/11/01 HTML / CSS
计算机软件个人的自荐信范文
2013/12/01 职场文书
小学教学随笔感言
2014/02/26 职场文书
高三毕业典礼主持词
2014/03/27 职场文书
建筑工地大门标语
2014/06/18 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
2014年中职班主任工作总结
2014/12/16 职场文书
志愿者个人总结
2015/03/03 职场文书
大学生入党自荐书
2015/03/05 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书
Python如何配置环境变量详解
2021/05/18 Python
springcloud之Feign超时问题的解决
2021/06/24 Java/Android