一、题目描述

二、解题思路
- 方法1:套三层循环,按排列组合把所有可能性push到结果里面,同时记录什么时候开始(结果数组的位置)是我们想要的结果。(比如’23’,那最后的所有组合都是两个字母的,‘234’,最后所有组合都是三个字母),最后从这个位置开始提取到最后一个位置,这个部分数组就是我们想要的结果。(后来看了别人题解好像大多数都这样…)
三、代码实现
- 方法1(暴力求解)
var letterCombinations = function (digits) {
const num_map = {
'2': ['a', 'b', 'c'],
'3': ['d', 'e', 'f'],
'4': ['g', 'h', 'i'],
'5': ['j', 'k', 'l'],
'6': ['m', 'n', 'o'],
'7': ['p', 'q', 'r', 's'],
'8': ['t', 'u', 'v'],
'9': ['w', 'x', 'y', 'z']
}
let res = ['']
now_id = 0
for (let digit of digits) {
res_length = res.length
for (let j = 0; j < res_length; j++) {
for (let i = 0; i < num_map[digit].length; i++) {
now = res[j] + num_map[digit][i]
res.push(now)
if (now.length != digits.length) {
now_id++
}
}
}
}
return res.slice(now_id + 1, res.length)
};