Skip to content

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

Description

@laizimo

题目描述

给定一个仅包含数字 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;
};

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions