LeetCode 17. 电话号码的字母组合

难度:中等。
标签:深度优先搜索,回溯算法,递归、字符串。

正确解法:

class Solution {

    map<char, string> phone = {
            {'2', "abc"}, {'3', "def"}, {'4', "ghi"}, {'5', "jkl"}, {'6', "mno"}, 
            {'7', "pqrs"}, {'8', "tuv"}, {'9', "wxyz"}};

    void DFS(string digits, vector<string>& result, string res){
        int index = res.length();
        if(digits.length() == res.length()){
            result.push_back(res);
            return;
        }
        string letters = phone[digits[index]];
        for(int i = 0; i < letters.length(); i++){
            res.push_back(letters[i]);
            DFS(digits, result, res);
            res.pop_back();
        }
    }

public:
    vector<string> letterCombinations(string digits) {
        int num = digits.length();
        vector<string> result;
        if(num == 0)return result;
        string res = "";
        DFS(digits, result, res);
        return result;
    }
};

LeetCode 17. 电话号码的字母组合_第1张图片

你可能感兴趣的:(刷题)