LeetCode 017. 电话号码的字母组合 dfs

地址 https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/

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

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


示例:

输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
复制代码

算法1
DFS做法 从每个数字对应的元素中选出一个 然后进入下一层
最终每层中都选出一个对应的元素 则组合成一个答案

以数字23为例

复制代码
class Solution {
public:

    map<char, string> m = {
    {'2',"abc"},{'3',"def"},
    {'4',"ghi"},{'5',"jkl"},
    {'6',"mno"},{'7',"pqrs"},
    {'8',"tuv"},{'9',"wxyz"}
};

vector<string> ans;

void dfs(string s, string digits, int idx)
{
    if (idx == digits.size()) {
        ans.push_back(s);
        return;
    }
    char digt = digits[idx];
    for (int j = 0; j < m[digt].size(); j++) {
        s += m[digt][j];
        dfs(s, digits,idx + 1);
        s.pop_back();
    }
}

vector<string> letterCombinations(string digits) {
    if(digits.size() == 0) return vector<string> ();
    string s;
    dfs(s, digits, 0);

    return ans;
}


};
复制代码

 

posted on   itdef  阅读(280)  评论(0编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
历史上的今天:
2017-08-26 查表胡牌判断算法 c++
2016-08-26 设计模式之模板模式 template

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示