题目名称

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

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

示例

输入:digits = “23”

输出:[“ad”,”ae”,”af”,”bd”,”be”,”bf”,”cd”,”ce”,”cf”]

题解

这道题 主要把每个数对应的字符一一列出来,然后遍历传入的内容,每取一组新的字符,都需要根据已有的字母组合进行新的组合,并且替换原有的组合

答案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 var letterCombinations = function(digits) {
let defaultCode = {
"2": "abc",
"3": "def",
"4": "ghi",
"5": "jkl",
"6": "mno",
"7": "qprs",
"8": "tuv",
"9": "wxyz"
}, strs = []
for(let i = 0; i < digits.length; i++) {
let s = defaultCode[digits[i]]
if(strs.length === 0) {
strs = s.split("")
} else {
let newStr = []
for(let j = 0; j < strs.length; j++) {
newStr.push(...s.split("").map(item => strs[j] + item))
}
strs = newStr
}
}
return strs
};