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 相关文章推荐
uploadify 3.0 详细使用说明
Jun 18 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
Sep 19 Javascript
extJS中常用的4种Ajax异步提交方式
Mar 07 Javascript
jQuery常用操作方法及常用函数总结
Jun 19 Javascript
字段太多jquey快速清空表单内容方法
Aug 21 Javascript
AngularJS HTML编译器介绍
Dec 06 Javascript
微信小程序实现红包雨功能
Jul 11 Javascript
JavaScript剩余操作符Rest Operator详解
Jul 20 Javascript
微信小程序iOS下拉白屏晃动问题解决方案
Oct 12 Javascript
Vue移动端实现图片上传及超过1M压缩上传
Dec 23 Javascript
2分钟实现一个Vue实时直播系统的示例代码
Jun 05 Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
Sep 01 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
Smarty+QUICKFORM小小演示
2007/02/25 PHP
php横向重复区域显示二法
2008/09/25 PHP
PHP中捕获超时事件的方法实例
2015/02/12 PHP
PHP mysql事务问题实例分析
2016/01/18 PHP
js event事件的传递与冒泡处理
2009/12/06 Javascript
javascript检测浏览器flash版本的实现代码
2011/12/06 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
2013/01/24 Javascript
javascript获取下拉列表框当中的文本值示例代码
2013/07/31 Javascript
javascript简单事件处理和with用法介绍
2013/09/16 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
javascript实现微信分享
2014/12/23 Javascript
实现高性能JavaScript之执行与加载
2016/01/30 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
js实现简单的选项卡效果
2017/02/23 Javascript
JS实现的DOM插入节点操作示例
2018/04/04 Javascript
js正则相关知识点专题
2018/05/10 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
2019/04/17 Javascript
微信小程序 生成携带参数的二维码
2019/10/23 Javascript
vue2.x 通过后端接口代理,获取qq音乐api的数据示例
2019/10/30 Javascript
Node如何后台数据库使用增删改查功能
2019/11/21 Javascript
Vertx基于EventBus发送接受自定义对象
2020/11/16 Javascript
ajax jquery实现页面某一个div的刷新效果
2021/03/04 jQuery
[20:46]Ti4循环赛第三日VG vs DK
2014/07/12 DOTA
python的Tqdm模块的使用
2018/01/10 Python
python+mysql实现教务管理系统
2019/02/20 Python
Python调用.NET库的方法步骤
2019/12/27 Python
彻底搞懂 python 中文乱码问题(深入分析)
2020/02/28 Python
Django视图类型总结
2021/02/17 Python
找工作最新求职信
2013/12/22 职场文书
教师节演讲稿
2014/05/06 职场文书
应届生求职信范文
2014/05/26 职场文书
2015年电工工作总结
2015/04/10 职场文书
导游词之贵州百里杜鹃
2019/10/29 职场文书
阿里云服务器部署RabbitMQ集群的详细教程
2022/06/01 Servers
springboot为异步任务规划自定义线程池的实现
2022/06/14 Java/Android