Skip to content
New issue

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

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

Already on GitHub? # to your account

第十七题 - 电话号码的字母组合 #18

Open
laizimo opened this issue May 31, 2020 · 0 comments
Open

第十七题 - 电话号码的字母组合 #18

laizimo opened this issue May 31, 2020 · 0 comments

Comments

@laizimo
Copy link
Owner

laizimo commented May 31, 2020

题目描述

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

image

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

算法

遍历

答案

/**
 * 遍历
 */
var letterCombinations = function(digits) {
    // #1 判断字符串是否为空
    if (!digits) return [];
    // #2 设置一个结果数组
    let res = [''];
    // #3 设置一个map数组
    const map = ['abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz'];
    // #4 遍历digits
    for (let i = 0; i < digits.length; i++) {
        // #5 取数
        let digit = parseInt(digits[i]);
        let d_str = map[digit - 2];
        let temp = [];
        // #6 遍历结果数组
        for (let j = 0; j < res.length; j++) {
            let item = res[j];
            // #7 结合每个结果和d_str的字母,放入temp
            for (let k = 0; k < d_str.length; k++) {
                temp.push(`${item}${d_str[k]}`);
            }
        }
        // #8 赋值结果
        res = temp;
    }
    return res;
};
# for free to join this conversation on GitHub. Already have an account? # to comment
Projects
None yet
Development

No branches or pull requests

1 participant