Skip to content
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

第十七题 - 电话号码的字母组合 #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;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant