电话号码的字母组合
Question
给定一个仅包含数字 2-9
的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意1
不对应任何字母。
思路
首先我们要解决以下问题:
- 考虑如果输入为空字符串的情况
- 映射的问题:如何将数字与字母对应上?
numberMap
- 字符串相加
- 字符串去除最后一个字符

js
var letterCombinations = function(digits) {
if(digits==="") return []
const res = [] // 结果[][]
let path = "" // 每次递归的结果
const numberMap = ["","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"]
const backtracking = (digits,startIndex)=>{
if(path.length===digits.length){
res.push(path)
return
}
const str = numberMap[parseInt(digits[startIndex])]
for(let i=0;i<str.length;i++ ){ // 本层集合中元素
path = path + str[i] //字符串相加
backtracking(digits,startIndex+1)
path = path.substr(0, path.length - 1); //字符串去除最后一个字符
}
}
backtracking(digits,0)
return res
};