电话号码组合 - 我的解法

来源:3-3 电话号码组合-代码演示

慕斯卡7269444

2019-02-16

这么写是不是简洁一点。

var letterCombinations = function(digits) {
    if (!digits.length) return [];

    let multiply = (arr1, arr2) => {
        let innerRes = []
        for (let i = 0, len1 = arr1.length; i < len1; ++i) {
            for (let j = 0, len2 = arr2.length; j < len2; ++j) {
                innerRes.push(arr1[i]+arr2[j])
            }
        }
        return innerRes
    }
    let res = [], arr = [[],[],['a','b','c'],['d','e','f'],['g','h','i'],['j','k','l'],['m','n','o'],['p','q','r','s'],['t','u','v'],['w','x','y','z']]
    return digits.split('').reduce((prev, cur) => {
        return multiply(prev, arr[Number(cur)])
    }, [''])
};

图片描述

写回答

2回答

Jay0Lu

2019-02-23

感谢!reduce 用的很厉害!

0
0

快乐动起来呀

2019-02-17

如果组合是多个呢,比如按键是3456

0
2
慕斯卡7269444
3456就是,['d','e','f'] * ['g','h','i'] * ['j','k','l'] * ['m','n','o']
2019-02-17
共2条回复

JavaScript版 数据结构与算法

填补前端同学的算法短板,掌握面试中最常见的算法与数据结构

2467 学习 · 395 问题

查看课程