思路:
创建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;
};
电话号码的字母组合
最新推荐文章于 2025-12-07 21:20:15 发布
本文介绍了如何使用JavaScript编写一个函数,通过回溯算法解决给定一组数字(如234)生成所有可能的字母组合(如abc、def等),利用map数据结构控制字母选择并实现递归调用。
715

被折叠的 条评论
为什么被折叠?



