17. Letter Combinations of a Phone Number
class Solution {
private:
    map<int , vector<char> > p = { {2, {'a', 'b', 'c'}},
                                   {3, {'d', 'e', 'f'}},
                                   {4, {'g', 'h', 'i'}},
                                   {5, {'j', 'k', 'l'}},
                                   {6, {'m', 'n', 'o'}},
                                   {7, {'p', 'q', 'r', 's'}},
                                   {8, {'t', 'u', 'v'}},
                                   {9, {'w', 'x', 'y', 'z'}}
                                  };
    vector<string> ph;
public:
    void generate(string digits, string &s, int i){
        if(digits.size() == 0){
            return;
        }
        if(i == digits.size()){
            ph.push_back(s);
            return;
        }
        for(int j = 0; j < p[digits[i] - '0'].size(); j++){
            s.push_back(p[digits[i] - '0'][j]);
            generate(digits, s, i + 1);
            s.pop_back();
        }
        return;
    }
    vector<string> letterCombinations(string digits) {
        string s;
        generate(digits, s, 0);
        return ph;
    }
};
Comments (0)