给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例:
输入:“23”
输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].
说明:
尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。
var letterCombinations = function(digits) {
let tel = ['', 1, 'abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz'];
let nums = digits.split('')
let code = nums.map(num => {
if (tel[num]) {
return tel[num]
}
})
if (digits.length === 1) {
if (parseInt(digits) > 1) {
return code[0].split('')
} else {
return []
}
} else {
let combCode = (arr) => {
let temp = []
if(arr.length > 1){
for (var i = 0; i < arr[0].length; i++) {
for (var j = 0; j < arr[1].length; j++) {
temp.push(`${arr[0][i]}${arr[1][j]}`)
}
}
}
arr.splice(0, 2, temp)
if (arr.length > 1) {
combCode(arr)
} else {
return temp
}
return arr[0]
}
return combCode(code)
}
};