17. 电话号码的字母组合

思路
1.首先将2-9对应的字符枚举出来
2.遍历所给digits参数,如果此时遍历的是参数中的第一个数组,比如’23’,正在遍历2对应的字母‘abc’,则将这三个字母赋值给数组中的三项[‘a’, ‘b’, ‘c’]
3.在遍历后续数字对应的字母时,让[‘a’, ‘b’, ‘c’]与正在遍历的字母相加,得到[‘ab’, ‘ae’, ‘af’, ‘bd’…]

			// 枚举数字对应的字母
			const emun = {
                2: 'abc',
                3: 'def',
                4: 'ghi',
                5: 'jkl',
                6: 'mno',
                7: 'pqrs',
                8: 'tuv',
                9: 'wxyz',
            }
            // 存储最终结果的数组
            let arr = []
            // 遍历参数
            for(let i = 0; i < digits.length; i++) {
            	// 定义临时数组
                let temArr = []
                for(let j = 0; j < emun[digits[i]].length; j++) {
                    if(arr.length > 0) {	// 如果arr数组不为空,则让被遍历的字母跟arr中的字母相加
                        for(let k = 0; k < arr.length; k++) {
                            temArr.push(arr[k] + emun[digits[i]][j])
                        }
                    }else {		// 如果此时arr数组为空,直接向tempArr数组中添加字母
                        temArr.push(emun[digits[i]][j])
                    }
                }
                // 把tempArr的值赋值给arr数组
                arr = temArr
            }
            return arr
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值