一、题目内容 中等
给定一个仅包含数字 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[]}
*/
const map = new Map([
[0, ""],
[1, ""],
[2, "abc"],
[3, "def"],
[4, "ghi"],
[5, "jkl"],
[6, "mno"],
[7, "pqrs"],
[8, "tuv"],
[9, "wxyz"],
])
var letterCombinations = function (digits) {
const len = digits.length;
const res = [];
const path = [];
if (len === 0) return res;
const backTracking = (start) => {
if (start === len) {
res.push(path.join(''));
return;
}
const letter = map.get(Number(digits[start]))
for (let i = 0; i < letter.length; i++) {
path.push(letter[i])
backTracking(start + 1);
path.pop()
}
}
backTracking(0);
return res;
};