【LeetCode】电话号码的字母组合

柔光的暖阳◎ 2023-07-13 13:45 42阅读 0赞

题目描述

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
在这里插入图片描述
示例:

输入:“23”
输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].

完整代码

  1. //创建数字映射的字符串数组
  2. string letterMap[10] = { "", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
  3. class Solution {
  4. public:
  5. //核心思想:总计深度为digits.size()层的递归
  6. //每层递归在字符串中的一个字符进行组合
  7. void combineStr(const string& digits, size_t index, const string& str, vector<string>& strs){
  8. if(index == digits.size())
  9. {
  10. strs.push_back(str);
  11. return;
  12. }
  13. //获取数字对应的字符数组
  14. string letters = letterMap[digits[index] - '0'];
  15. for(size_t i = 0; i < letters.size(); i++)
  16. {
  17. combineStr(digits, index + 1, str + letters[i], strs);
  18. }
  19. }
  20. vector<string> letterCombinations(string digits) {
  21. vector<string> strs;
  22. if(digits.empty())
  23. {
  24. return strs;
  25. }
  26. size_t index = 0;
  27. string str;
  28. //递归子问题组合字符串
  29. combineStr(digits, index, str, strs);
  30. return strs;
  31. }
  32. };

发表评论

表情:
评论列表 (有 0 条评论,42人围观)

还没有评论,来说两句吧...

相关阅读