源码:
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();
}
}
};
结果: