电话号码的字母组合

给定一个字符串 s 表示一个整数嵌套列表,实现一个解析它的语法分析器并返回解析的结果 NestedInteger 。
列表中的每个元素只可能是整数或整数嵌套列表

  • 输入:digits = “23”

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

  • 输入:digits = “”

  • 输出:[]

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
26
27
28
29
30
31
32
33
var letterCombinations = function(digits) {
let phone = { //电话数字到字母的映射
'2': 'abc',
'3': 'def',
'4': 'ghi',
'5': 'jkl',
'6': 'mno',
'7': 'pqrs',
'8': 'tuv',
'9': 'wxyz'
};
let arr = [];
for (let i of digits) {
arr = merge(arr, phone[i]);
}
return arr;
};

const merge = (arr, str) => { //将str每个字符与arr已有字符串进行组合
let newArr = [];
if (arr.length === 0) { //arr是空数组
for (let i of str) {
newArr.push(i);
}
} else { //非空数组
for (let i of arr) { //将arr已有字符串与str组合,存入newArr
for (let j of str) {
newArr.push(i + j);
}
}
}
return newArr;
};