LeetCode —— 17. 电话号码的字母组合


😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️Take your time ! 😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️

💥个人主页:🔥🔥🔥大魔王🔥🔥🔥

💥所属专栏:🔥魔王的修炼之路--C++🔥
如果你觉得这篇文章对你有帮助,请在文章结尾处留下你的点赞 👍和关注 💖,支持一下博主。同时记得收藏✨这篇文章,方便以后重新阅读。

17. 电话号码的字母组合

这个题目需要通过深度优先遍历DFS来解决,就相当于高中数学的排列组合,也类似于二叉树的前序遍历。
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

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

示例 1:

输入:digits = "23"

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

示例 2:

输入:digits = ""

输出:[]

示例 3:

输入:digits = "2"

输出:["a","b","c"]

提示:

0 <= digits.length <= 4

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

cpp 复制代码
//abc def ghi
void combine(vector<string>& cmb, string& digits, size_t i,string* map, string str)
{
    if(i == digits.size())
    {
        cmb.push_back(str);
        return;
    }


    for(int j = 0; j < (map[digits[i] - '0']).size(); j++)
    {
        combine(cmb, digits, i + 1, map, str + (map[digits[i] - '0'])[j]);
    }
}

class Solution {
public:
    vector<string> letterCombinations(string digits) {
        if(digits.size() == 0)
            return vector<string>();
        string map[10] = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};//存数字对应的字母
        vector<string> cmb;//存组合的字母
        string str;
        size_t i = 0;//存当前走到第 i + 1个数字了
        combine(cmb, digits, i, map, str);
        return cmb;
    }
};
  • 博主长期更新,博主的目标是不断提升阅读体验和内容质量,如果你喜欢博主的文章,请点个赞或者关注博主支持一波,我会更加努力的为你呈现精彩的内容。

🌈专栏推荐
😈魔王的修炼之路--C语言
😈魔王的修炼之路--数据结构初阶
😈魔王的修炼之路--C++
😈魔王的修炼之路--Linux
更新不易,希望得到友友的三连支持一波。收藏这篇文章,意味着你将永久拥有它,无论何时何地,都可以立即找到重新阅读;关注博主,意味着无论何时何地,博主将永久和你一起学习进步,为你带来有价值的内容。

相关推荐
Hical_W2 分钟前
深入学习CPP26_静态反射
c++·学习
进击的荆棘2 分钟前
C++起始之路——红黑树的实现
开发语言·数据结构·c++·stl·红黑树
菜择贰8 小时前
B树的性质和查找、插入、删除操作
数据结构·b树
LDR0068 小时前
接口焦虑终结者:LDR6020 芯片如何重新定义 Type-C 拓展坞与多设备互联时代
数据结构·经验分享·智能音箱
房开民10 小时前
可变参数模板
java·开发语言·算法
t***54410 小时前
如何在现代C++中更有效地应用这些模式
java·开发语言·c++
_深海凉_10 小时前
LeetCode热题100-最小栈
java·数据结构·leetcode
不知名的忻10 小时前
Morris遍历(力扣第99题)
java·算法·leetcode·morris遍历
状元岐10 小时前
C#反射从入门到精通
java·javascript·算法
itman30111 小时前
C语言、C++与C#深度研究:从底层到现代开发演进全解析
c语言·c++·c·内存管理·编译模型