3 Star 21 Fork 5

xiaochen1024/leetcode

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
17.js 1.60 KB
一键复制 编辑 原始数据 按行查看 历史
chenwei 提交于 2021-10-23 21:19 . init
var letterCombinations = (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",
};
const dfs = (curStr, i) => {
//curStr是递归每一层的字符串,i是扫描的指针
if (i > digits.length - 1) {
//边界条件,递归的出口
res.push(curStr); //其中一个分支的解推入res
return; //结束递归分支,进入另一个分支
}
const letters = map[digits[i]]; //取出数字对应的字母
for (const l of letters) {
//进入不同字母的分支
dfs(curStr + l, i + 1); //参数传入新的字符串,i右移,继续递归
}
};
dfs("", 0); // 递归入口,传入空字符串,i初始为0的位置
return res;
};
var letterCombinations = (digits) => {
if (digits.length == 0) return [];
const map = {
2: "abc",
3: "def",
4: "ghi",
5: "jkl",
6: "mno",
7: "pqrs",
8: "tuv",
9: "wxyz",
};
const queue = [];
queue.push("");
for (let i = 0; i < digits.length; i++) {
//循环数字的每个字符
const levelSize = queue.length; //当前层的节点个数
for (let j = 0; j < levelSize; j++) {
const curStr = queue.shift(); //当前层的字符串
const letters = map[digits[i]]; //获取数字对应的字母字符
for (const l of letters) {
queue.push(curStr + l); //新生成的字符串入列
}
}
}
return queue; //最后一层生成的字符串就是解
};
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/xiaochen1024/leetcode.git
git@gitee.com:xiaochen1024/leetcode.git
xiaochen1024
leetcode
leetcode
master

搜索帮助