代码拉取完成,页面将自动刷新
同步操作将从 老胡来也/EveryDay 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
给定一个仅包含数字2-9
的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下,即与电话按键相同。注意1
不对应任何字母。
输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。
/**
* @param {string} digits
* @return {string[]}
*/
var letterCombinations = function(digits) {
var n = digits.length;
var target = [];
if(!n) return target;
var map = {
"2": "abc",
"3": "def",
"4": "ghi",
"5": "jkl",
"6": "mno",
"7": "pqrs",
"8": "tuv",
"9": "wxyz"
};
var dfs = function(i, tmp){
if(i === n) {
target.push(tmp);
return void 0;
}
var unit = map[digits[i]];
Array.prototype.forEach.call(unit, v => dfs(i+1,`${tmp}${v}`));
}
dfs(0, "");
return target;
};
回溯法,对于输入可以构成一棵树,然后采用回溯法遍历这棵树,即可获得所有的字母组合,首先定义n
作为输入的按键的长度,然后定义目标数组,如果按键长度为0
则直接返回空数组,定义一个map
作为按键与字母的映射,之后定义一个dfs
深度递归,如果当前递归的位置i
与按键输入长度相同,则将拼接的字符串置入target
数组并结束递归,之后获取按键的所有字符,之后遍历这个字符串,将其拼接到已有字符串之后再向下递归并传递当前树的深度以及拼接后的字符串,之后开始启动递归,递归完毕后将目标数组返回即可。
https://github.com/WindrunnerMax/EveryDay
https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。