leetcode记录17. Letter Combinations of a Phone Number

17. Letter Combinations of a Phone Number

Runtime: 4 ms, faster than 100.00% of C++ online submissions for Letter Combinations of a Phone Number.
Memory Usage: 8.7 MB, less than 62.00% of C++ online submissions for Letter Combinations of a Phone Number.

class Solution {
public:
    vector letterCombinations(string digits) {
        vector dict = {"abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
        if(digits.size() == 0){
            vector empty;
            return empty;
        }
        return Descartes(digits, dict);
    }
    vector Descartes(string digits, vector dict){
        int len = digits.size();
        if(len == 1){
            vector temp;
            int idx = digits[0] - '0';
            for(int i = 0; i < dict[idx-2].size(); i++){
                string s(1, dict[idx-2][i]);
                temp.push_back(s);
            }
            return temp;
        }
        string left = digits.substr(0, len/2);
        string right = digits.substr(len/2);
        vector leftDes = Descartes(left, dict);
        vector rightDes = Descartes(right, dict);
        vector result;
        for (int i = 0; i < leftDes.size(); i++){
            for(int j = 0; j < rightDes.size(); j++){
                result.push_back(leftDes[i] + rightDes[j]);
            }
        }
        return result;
    }

};

你可能感兴趣的:(leetcode)