Skip to content
On this page

电话号码的字母组合

Question

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意1不对应任何字母。

img

思路

首先我们要解决以下问题:

  • 考虑如果输入为空字符串的情况
  • 映射的问题:如何将数字与字母对应上? numberMap
  • 字符串相加
  • 字符串去除最后一个字符
17. 电话号码的字母组合
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
};