Skip to content

电话号码的字母组合-17 #65

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
sl1673495 opened this issue Jun 10, 2020 · 0 comments
Open

电话号码的字母组合-17 #65

sl1673495 opened this issue Jun 10, 2020 · 0 comments
Labels
例题详解 每个分类下会挑出几道题目进行精讲,其他的同类题目会默认拥有这些前置知识而简略讲解。 待复习 看题解或者做出来很艰难的,需要回顾。 递归与回溯

Comments

@sl1673495
Copy link
Owner

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。

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

image

示例:

输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
说明:
尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

每次递归中都对当前数字所代表的的字母全部列出来,拼在已完成的字符后面,再交给下一次递归。通过 index 下标来判断是否完成,一旦长度符合,就放入结果数组中。

/**
 * @param {string} digits
 * @return {string[]}
 */
let letterMap = [
    " ",    //0
    "",     //1
    "abc",  //2
    "def",  //3
    "ghi",  //4
    "jkl",  //5
    "mno",  //6
    "pqrs", //7
    "tuv",  //8
    "wxyz"  //9
]

let letterCombinations = function (digits) {
    let res = []

    if (digits === "") {
        return res
    }

    let findCombinations = (index, str) => {
        if (digits.length === index) {
            res.push(str)
            return
        }

        let char = digits[index]
        let letters = letterMap[Number(char)]

        for (let i = 0; i < letters.length; i++) {
            let letter = letters[i]
            findCombinations(index + 1, `${str}${letter}`)
        }
    }

    findCombinations(0, "")

    return res
};
@sl1673495 sl1673495 added DFS 深度优先遍历 待复习 看题解或者做出来很艰难的,需要回顾。 递归与回溯 例题详解 每个分类下会挑出几道题目进行精讲,其他的同类题目会默认拥有这些前置知识而简略讲解。 and removed DFS 深度优先遍历 labels Jun 10, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
例题详解 每个分类下会挑出几道题目进行精讲,其他的同类题目会默认拥有这些前置知识而简略讲解。 待复习 看题解或者做出来很艰难的,需要回顾。 递归与回溯
Projects
None yet
Development

No branches or pull requests

1 participant