17. 电话号码的字母组合

134 阅读1分钟

17. 电话号码的字母组合

arr.push(brr) 构建二维数组

function f(i) { dfs深度遍历

var letterCombinations = function (str) {
    if(!str) return []
    var obj = {
        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 len = str.length;
    var arr = []
    for (var i = 0; i < len; i++) {
        var brr = obj[str[i]]
        arr.push(brr)
    }
    function f(i) {
        var res = []
        var crr = arr[i]
        if (i == arr.length - 1) {
            return arr[arr.length - 1]
        }
        for (var j = 0; j < crr.length; j++) {
            var item = crr[j]
            var drr = f(i + 1).map(v => item + v)
            res = res.concat(drr)
        }
        return res
    }
    return f(0)
};