leetcode-17. 电话号码的字母组合

 

 

class Solution {
public:
    vector<string> res;
    unordered_map<char,string> map;
    string str = "";
    vector<string> letterCombinations(string digits) {

        int len = digits.length();
        if(len==0)
            return res;
        // 初始化
        map.insert({{'2',"abc"}, {'3',"def"}, {'4',"ghi"}, {'5',"jkl"}, 
        {'6',"mno"}, {'7',"pqrs"}, {'8',"tuv"}, {'9', "wxyz"}});
        
        //map.insert({'2',"abc"});  单个初始化
        
        // 还可以通过数组形式进行初始化
        //map['a'] = "abc";



        backbone(digits,0);
        return res;
    }

    void backbone(string digits, int index){
        if(index == digits.size()){
            res.push_back(str);
        }
        string tmp = map[digits[index]];
        for(int i = 0; i < tmp.size(); i++){
            str += tmp[i];
            backbone(digits, index+1);  // 递归,注意index+1,一下层要处理下一个数
            str.pop_back();  // 回溯
        }
    }
};

 

posted @ 2021-07-15 13:39  三一一一317  阅读(31)  评论(0)    收藏  举报