代码拉取完成,页面将自动刷新
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; //最后一层生成的字符串就是解
};
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。