力扣,电话号码的字母组合,js解法

52 阅读1分钟

源码:

var letterCombinations = function(digits) {
    const depth = digits.length;
    const map = ['','','abc','def','ghi','jkl','mno','pqrs','tuv','wxyz'];
    if(!depth) return [];
    if(depth === 1) return map[digits].split('');
    const res = [], path = [];
    backtracking(digits, depth, 0);
    return res;
  
    // a用于控制digits的进位
    function backtracking(digits, depth, a) {
        // 当递归到最底层时,将每个递归结果存入res中
        if(path.length === depth){
            res.push(path.join('')); // 数组转字符串,如['a','b'] => 'ab'
            return;
        }
        for(const v of map[digits[a]]){
            path.push(v);
            backtracking(digits, depth, a+1);
            path.pop();
        }
    }
};

结果:

image.png

image.png

image.png