export {};
const result = letterCombinations("23");
console.log(result);
function letterCombinations(digits: string) {
const map:string[] = [
"",
"",
"abc",
"def",
"ghi",
"jkl",
"mno",
"pqrs",
"tuv",
"wxyz",
];
// 没考虑特殊情况,为空为1的情况,这里可以加上这些情况
// 结果集
const res:string[] = [];
// 路径集
const path:string[] = [];
backtracking(digits, digits.length,0);
return res;
function backtracking(digits:string, depth:number,h:number) {
// 路径的长度等于深度,则表示遍历到叶子结点,然后返回结果
if (path.length === depth) {
res.push(path.join(''));
return;
}
// for循环是横向遍历
// for循环也可以理解成一个取值(或选择)的过程
for (let v of map[Number.parseInt(digits[h])]) {
path.push(v)
backtracking(digits,depth,h+1) //递归
path.pop() //回溯
}
}
}