https://leetcode.com/problems/letter-combinations-of-a-phone-number/
1. Use DFS:
class Solution {public:vector<string> letterCombinations(string digits) {if (digits.empty()) return {};vector<vector<char>> d;d.push_back({' '});d.push_back({});d.push_back({'a','b','c'});d.push_back({'d','e','f'});d.push_back({'g','h','i'});d.push_back({'j','k','l'});d.push_back({'m','n','o'});d.push_back({'p','q','r','s'});d.push_back({'t','u','v'});d.push_back({'w','x','y','z'});vector<string> result;string curr = "";DFS(digits, result, curr, d, 0);return result;}private:void DFS(string digits, vector<string>& result, string& curr, vector<vector<char>> d, int len){if(len==digits.length()){result.push_back(curr);return;}int s = digits[len] - '0';for(auto a : d[s]){curr.push_back(a);DFS(digits, result, curr, d, len + 1);curr.pop_back();}}};
