难度:中等
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例 1:
输入:digits = “23”
输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]
示例 2:
输入:digits = “”
输出:[]
示例 3:
输入:digits = “2”
输出:[“a”,“b”,“c”]
/**
* @param {string} digits
* @return {string[]}
*/
var letterCombinations = function(digits) {
if(digits.length==0) return []
var result = []
var path = []//数组形式存储每个字符
var map={ // 用map映射数字和字母
2:"abc",3:"def",4:"ghi",5:"jkl",6:"mno",7:"pqrs",8:"tuv",9:"wxyz"
}
//或者用数组var arr=["","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"]
var backTracking = function(i){
if(path.length==digits.length){
result.push(path.join(""))
//['a','b'].join("")------>ab
return
}
const letters = map[digits[i]]
for(const l of letters){
path.push(l)
backTracking(i+1)
path.pop()
}
}
backTracking(0)
return result
}