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 相关文章推荐
彻底搞懂JS无缝滚动代码
Jan 03 Javascript
理解 JavaScript 预解析
Oct 25 Javascript
javascript点击按钮实现隐藏显示切换效果
Feb 03 Javascript
Bootstrap popover用法详解
Dec 22 Javascript
Angular2利用组件与指令实现图片轮播组件
Mar 27 Javascript
纯JS实现图片验证码功能并兼容IE6-8(推荐)
Apr 19 Javascript
jQuery:unbind方法的使用详解
Aug 14 jQuery
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
Mar 13 Javascript
使用D3.js构建实时图形的示例代码
Aug 28 Javascript
JavaScript 作用域scope简单汇总
Oct 23 Javascript
JS实现横向轮播图(中级版)
Jan 18 Javascript
Vue 实现v-for循环的时候更改 class的样式名称
Jul 17 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分页显示制作详细讲解
2006/10/09 PHP
php遍历目录下文件并按修改时间排序操作示例
2019/07/12 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
thinkphp 表名 大小写 窍门
2015/02/01 Javascript
JavaScript中的acos()方法使用详解
2015/06/14 Javascript
深入讲解AngularJS中的自定义指令的使用
2015/06/18 Javascript
基于jquery实现放大镜效果
2015/08/17 Javascript
超赞的jQuery图片滑块动画特效代码汇总
2016/01/25 Javascript
ES6所改良的javascript“缺陷”问题
2016/08/23 Javascript
bootstrap输入框组件使用方法详解
2017/01/19 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
2017/04/13 Javascript
angularjs $http实现form表单提交示例
2017/06/09 Javascript
使用SVG基本操作API的实例讲解
2017/09/14 Javascript
微信小程序动画(Animation)的实现及执行步骤
2018/10/28 Javascript
vue里的data要用return返回的原因浅析
2019/05/28 Javascript
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
[01:56]2014DOTA2西雅图邀请赛 MVP外卡赛老队长精辟点评
2014/07/09 DOTA
[02:23]2014DOTA2国际邀请赛中国战队回顾
2014/08/01 DOTA
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
pandas DataFrame 根据多列的值做判断,生成新的列值实例
2018/05/18 Python
Python爬虫常用小技巧之设置代理IP
2018/09/13 Python
Python实现多态、协议和鸭子类型的代码详解
2019/05/05 Python
django创建最简单HTML页面跳转方法
2019/08/16 Python
python实现的汉诺塔算法示例
2019/10/23 Python
python实现飞船大战
2020/04/24 Python
HTML5新增属性data-*和js/jquery之间的交互及注意事项
2017/08/08 HTML / CSS
师范生自我鉴定范文
2013/10/05 职场文书
招商经理岗位职责
2013/11/16 职场文书
股权转让协议书
2014/04/12 职场文书
群众路线教育实践活动思想汇报(2014特荐篇)
2014/09/16 职场文书
农业局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
文化苦旅读书笔记
2015/06/29 职场文书
护理工作心得体会
2016/01/22 职场文书
Python基础知识之变量的详解
2021/04/14 Python
Java中常用解析工具jackson及fastjson的使用
2021/06/28 Java/Android