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 相关文章推荐
事件模型在各浏览器中存在差异
Oct 20 Javascript
网页右键ie不支持event.preventDefault和event.returnValue (需要加window)
Feb 22 Javascript
JavaScript作用域与作用域链深入解析
Dec 06 Javascript
javascript函数式编程实例分析
Apr 25 Javascript
js+css实现文字散开重组动画特效代码分享
Aug 21 Javascript
jquery实现的点击翻书效果代码
Nov 04 Javascript
prototype与__proto__区别详细介绍
Jan 09 Javascript
hammer.js实现图片手势放大效果
Aug 29 Javascript
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
Sep 15 Javascript
浅谈Angular6的服务和依赖注入
Jun 27 Javascript
使用mixins实现elementUI表单全局验证的解决方法
Apr 02 Javascript
layui实现tab的添加拒绝重复的方法
Sep 04 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/12/06 PHP
php遍历文件夹和文件列表示例分享
2014/03/11 PHP
PHP跨平台获取服务器IP地址自定义函数分享
2014/12/29 PHP
PHP使用Http Post请求发送Json对象数据代码解析
2020/07/16 PHP
jquery放大镜效果超漂亮噢
2013/11/15 Javascript
javascript实现炫酷的拖动分页
2015/05/11 Javascript
在Python中使用glob模块查找文件路径的方法
2015/06/17 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
JS实现在状态栏显示打字效果完整实例
2015/11/02 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
使用jquery提交form表单并自定义action的实现代码
2016/05/25 Javascript
jQuery图片加载显示loading效果
2016/11/04 Javascript
jQuery实现checkbox全选功能完整实例
2018/07/12 jQuery
javascript中call()、apply()的区别
2019/03/21 Javascript
微信小程序实现弹出菜单动画
2019/06/21 Javascript
Layui弹框中数据表格中可双击选择一条数据的实现
2020/05/06 Javascript
JQuery基于FormData异步提交数据文件
2020/09/01 jQuery
JavaScript 判断数据类型的4种方法
2020/09/11 Javascript
python实现RSA加密(解密)算法
2016/02/17 Python
Python算术运算符实例详解
2017/05/31 Python
Python调用微信公众平台接口操作示例
2017/07/08 Python
详解Python之unittest单元测试代码
2018/01/24 Python
Django xadmin开启搜索功能的实现
2019/11/15 Python
Kent & Curwen:与大卫·贝克汉姆合作
2017/06/13 全球购物
印度网上药店:1mg
2017/10/13 全球购物
巴西在线鞋店:Shoestock
2017/10/28 全球购物
采购文员岗位职责
2013/11/20 职场文书
4S店售后客服自我评价
2014/04/09 职场文书
毕业横幅标语
2014/10/08 职场文书
演讲开场白和结束语
2015/05/29 职场文书
初二数学教学反思
2016/02/17 职场文书
世界上超棒的8种逻辑思维
2019/08/06 职场文书
2019垃圾分类宣传口号汇总
2019/08/16 职场文书
vue项目两种方式实现竖向表格的思路分析
2021/04/28 Vue.js
NASA 机智号火星直升机拍到了毅力号设备碎片
2022/04/29 数码科技
微软Win11 全新照片应用面向 Dev预览版推出 新版本上手体验图集
2022/09/23 数码科技