LeetCode热题100 电话号码的字母组合

题目描述

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

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

示例 1:


输入 :digits = "23"
输出 :["ad","ae","af","bd","be","bf","cd","ce","cf"]

示例 2:

输入 :digits = "2"
输出 :["a","b","c"]

提示:

1 <= digits.length <= 4

digits[i] 是范围 ['2', '9'] 的一个数字。

思路

1 使用哈希表存储每个数字代表的字符串。

2 digits的每个数字作为一层dfs,每次挑出字符串中的一个字符出来组成答案。

3 详细见代码。

代码

cpp 复制代码
class Solution {
public:
    // 利用哈希表存储每个数字的字符串
    unordered_map<char, string>mp{
        {'2', "abc"},
        {'3', "def"},
        {'4', "ghi"},
        {'5', "jkl"},
        {'6', "mno"},
        {'7', "pqrs"},
        {'8', "tuv"},
        {'9', "wxyz"},
        };

    vector<string> letterCombinations(string digits) {
        vector<string>ans;
        string res;

        int po = 0; // 遍历第po个位置的字符串
        string s = mp[digits[po]];
        int m = s.size();
        for(int i = 0; i < m; ++i)
        {
            res.push_back(s[i]);
            dfs(digits, res, ans);
            res.pop_back();
        }

        return ans;
    }

    void dfs(string &digits, string &res, vector<string> &ans)
    {
        if(res.size() == digits.size())
        {
            ans.push_back(res);
            return;
        }

        int po = res.size(); // 遍历第po个位置的字符串
        string s = mp[digits[po]];
        int m = s.size();
        for(int i = 0; i < m; ++i)
        {
            res.push_back(s[i]);
            dfs(digits, res, ans);
            res.pop_back();
        }
    }
    
};
相关推荐
CoderCodingNo5 小时前
【NOIP】2011真题解析 luogu-P1003 铺地毯 | GESP三、四级以上可练习
算法
iFlyCai6 小时前
C语言中的指针
c语言·数据结构·算法
Laurence6 小时前
C++ 引入第三方库(一):直接引入源文件
开发语言·c++·第三方库·添加·添加库·添加包·源文件
查古穆6 小时前
栈-有效的括号
java·数据结构·算法
再一次等风来6 小时前
近场声全息(NAH)仿真实现:从阵列实值信号到波数域重建
算法·matlab·信号处理·近场声全息·nah
汀、人工智能6 小时前
16 - 高级特性
数据结构·算法·数据库架构·图论·16 - 高级特性
大熊背6 小时前
利用ISP离线模式进行分块LSC校正的方法
人工智能·算法·机器学习
XWalnut7 小时前
LeetCode刷题 day4
算法·leetcode·职场和发展
蒸汽求职7 小时前
机器人软件工程(Robotics SDE):特斯拉Optimus落地引发的嵌入式C++与感知算法人才抢夺战
大数据·c++·算法·职场和发展·机器人·求职招聘·ai-native
charlee447 小时前
最小二乘问题详解17:SFM仿真数据生成
c++·计算机视觉·sfm·数字摄影测量·无人机航测