给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

示例:

输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

/**
 * @param {string} digits
 * @return {string[]}
 */
var letterCombinations = function(digits) {
    var hashMap = {
        '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){
        return []
    }
    if(digits.length < 2){
        return hashMap[digits];
    }
    var letterArr = [];
    for(var temp of digits){
        letterArr.push(hashMap[temp])
    }

    var res = letterArr.reduce((prev, curv) => {
        var temp = [];
        prev.map( item1 => {
            curv.map( item2 => {
                temp.push(item1 + item2);
            })
        })
        return temp;
    })

    return res;
};