题目:
难度:Middle
相关话题:字符串
、回溯算法
给定一个仅包含数字 2-9
的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例:
输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
说明: 尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。
思路:
回溯算法
,对每一个数字上的每一个字母都要进行全排列处理。
/**
* @来源: Javascript中文网 - 前端进阶资源教程 https://www.javascriptc.com/
* @介绍:一个致力于帮助开发者用代码改变世界为使命的平台,每天都可以在这里找到技术世界的头条内容
* @param {string} digits
* @return {string[]}
*/
var letterCombinations = function(digits) {
if(digits==="")return []
let alphArr=[null,null,'abc','def','ghi','jkl','mno','pqrs','tuv','wxyz']
let len=digits.length
let result=[]
function bt(result,temp,len,digits,start){
// console.log(temp)
if(temp.length===len){
result.push(temp)
return
}
let cur=alphArr[digits[start]]
for(let i=0;i<cur.length;i++){
bt(result,temp+cur[i],len,digits,start+1)
}
}
bt(result,'',len,digits,0)
return result
};
扩展阅读: