当前位置:   article > 正文

(LeetCode C++) 电话号码的字母组合_电话号码的字母组合 c++

电话号码的字母组合 c++

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

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

示例 1:

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

 

示例 2:

  1. 输入:digits = ""
  2. 输出:[]

示例 3:

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

提示:

  1. 0 <= digits.length <= 4
  2. digits[i] 是范围 ['2', '9'] 的一个数字。

Code:

  1. class Solution{
  2. public:
  3. // 电话号码的字母组合
  4. // 存储电话号码到字母的映射
  5. const string numbers[10] = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz" };
  6. // 存储最终字母组合的数组
  7. vector<string> result;
  8. // 缓存字母组合
  9. string cache;
  10. // 递归组合
  11. void charCombinnation(string digits, int index) {
  12. // 如果递归结束,则将当前缓存的字母组合存入数组中
  13. if (index == digits.size()) {
  14. result.push_back(cache);
  15. return;
  16. }
  17. // 利用ASCII码计算当前数字在映射中的索引
  18. int digit = digits[index] - '0';
  19. // 取出当前数字的字母映射
  20. string letters = numbers[digit];
  21. // 循环,递归遍历所有可能的情况
  22. for (int i = 0; i < letters.size();i++) {
  23. cache.push_back(letters[i]);
  24. charCombinnation(digits, index + 1);
  25. cache.pop_back();
  26. }
  27. }
  28. // 电话号码的字母组合
  29. vector<string> letterCombinations(string digits) {
  30. if (digits.size() == 0){
  31. return result;
  32. }
  33. charCombinnation(digits, 0);
  34. // 返回所有的电话号码的字母组合
  35. return result;
  36. }
  37. };

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/letter-combinations-of-a-phone-number

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/579172
推荐阅读
相关标签
  

闽ICP备14008679号