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中两种链式调用实现代码
Jan 12 Javascript
DOM 事件流详解
Jan 20 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
Apr 27 Javascript
jQuery简单实现iframe的高度根据页面内容自适应的方法
Aug 01 Javascript
jquery radio的取值_radio的选中_radio的重置方法
Sep 20 Javascript
深入浅析JavaScript中的RegExp对象
Sep 18 Javascript
基于webpack.config.js 参数详解
Mar 20 Javascript
微信小程序实现两个页面传值的方法分析
Dec 11 Javascript
详解nvm管理多版本node踩坑
Jul 26 Javascript
JS document form表单元素操作完整示例
Jan 13 Javascript
详解Vue的mixin策略
Nov 19 Vue.js
微信小程序实现点赞业务
Feb 10 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
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
codeigniter发送邮件并打印调试信息的方法
2015/03/21 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
DHTML Slide Show script图片轮换
2008/03/03 Javascript
JS Range HTML文档/文字内容选中、库及应用介绍
2011/05/12 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
2013/11/08 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
2014/03/12 Javascript
使用jQuery不判断浏览器高度解决iframe自适应高度问题
2014/12/16 Javascript
nodejs中操作mysql数据库示例
2014/12/20 NodeJs
Node.js五大应用性能技巧小结(必须收藏)
2017/08/09 Javascript
JavaScript数组去重的多种方法(四种)
2017/09/19 Javascript
vue实现手机号码抽奖上下滚动动画示例
2017/10/18 Javascript
微信小程序带动画弹窗组件使用方法详解
2018/11/27 Javascript
JavaScript解析及序列化JSON的方法实例分析
2019/01/04 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
2020/10/27 Javascript
[00:32]2018DOTA2亚洲邀请赛EG出场
2018/04/03 DOTA
Python循环语句中else的用法总结
2016/09/11 Python
利用python获取Ping结果示例代码
2017/07/06 Python
python logging日志模块原理及操作解析
2019/10/12 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
2020/04/29 Python
python同时遍历两个list用法说明
2020/05/02 Python
Python自带的IDE在哪里
2020/07/01 Python
python中用ggplot绘制画图实例讲解
2021/01/26 Python
CSS3简单实现照片墙
2014/12/12 HTML / CSS
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
家庭户外服装:Hawkshead
2017/11/02 全球购物
公司培训欢迎词
2014/01/10 职场文书
文艺晚会主持词
2014/03/24 职场文书
青春奉献演讲稿
2014/05/08 职场文书
品牌推广策划方案
2014/05/28 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书
Python中zipfile压缩包模块的使用
2021/05/14 Python
详解python网络进程
2021/06/15 Python
Django Paginator分页器的使用示例
2021/06/23 Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
2021/06/29 Python
JavaScript 中for/of,for/in 的详细介绍
2021/11/17 Javascript