思路:
创建map字母表
创建回溯函数,接收一个表示当前长度和当前字符的参数
basecase:当字符串长度为要求的字符长度+1时,将字符串push到结果中,然后return,进行回溯
currStr是深拷贝,不为引用,所以返回之后就回到前面的值了
同时通过i进行控制字母组合,如difits='23',第一次进入回溯函数i=0,对应digits[i]即为map中2对应的字母,
随后对回溯进行递归传参为i+1,即为与后面的组合,如此通过循环找出所有可能
var letterCombinations = function (digits) {
if(digits.length == 0) return [];
const res = [];
const map = { '2': 'abc', '3': 'def', '4': 'ghi', '5': 'jkl', '6': 'mno',
'7': 'pqrs', '8': 'tuv', '9': 'wxyz' };
function dfs(i, currStr) {
if (i > digits.length - 1) {
res.push(currStr);
return;
}
const letters = map[digits[i]];
for (const letter of letters) {
dfs(i + 1, currStr + letter);
}
};
dfs(0, '');
return res;
};
07-16
756
11-29
489
11-17
09-27