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

1. Use DFS:

  1. class Solution {
  2. public:
  3. vector<string> letterCombinations(string digits) {
  4. if (digits.empty()) return {};
  5. vector<vector<char>> d;
  6. d.push_back({' '});
  7. d.push_back({});
  8. d.push_back({'a','b','c'});
  9. d.push_back({'d','e','f'});
  10. d.push_back({'g','h','i'});
  11. d.push_back({'j','k','l'});
  12. d.push_back({'m','n','o'});
  13. d.push_back({'p','q','r','s'});
  14. d.push_back({'t','u','v'});
  15. d.push_back({'w','x','y','z'});
  16. vector<string> result;
  17. string curr = "";
  18. DFS(digits, result, curr, d, 0);
  19. return result;
  20. }
  21. private:
  22. void DFS(string digits, vector<string>& result, string& curr, vector<vector<char>> d, int len){
  23. if(len==digits.length()){
  24. result.push_back(curr);
  25. return;
  26. }
  27. int s = digits[len] - '0';
  28. for(auto a : d[s]){
  29. curr.push_back(a);
  30. DFS(digits, result, curr, d, len + 1);
  31. curr.pop_back();
  32. }
  33. }
  34. };