每天一道笔试题-电话号码的字母组合

228 阅读1分钟

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

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

实现具体思路可参考视频:

www.bilibili.com/video/BV1FK…

代码实现:

let letterArr = [
    ' ',
    '',
    'abc',
    'edf',
    'ghi',
    'jkl',
    'mno',
    'pqrs',
    'tuv',
    'wxyz'
]
let results = []
var letterCombinations = function(digits) {
    if(digits.length === 0) {
        return results
    }
    findCombination(digits, 0, '')
    return results
};
function findCombination(digits, index, str) {
    if(index === digits.length) {
        results.push(str)
        return
    }
    let c = digits[index]
    let letters = letterArr[c - '0']
    for (let i = 0; i < letters.length; i++) {
        findCombination(digits, index + 1, str + letters[i])
    }
}
console.log(letterCombinations(''))