17.电话号码的字母组合

思路:排列组合题目一般都可以用递归+回溯的思路做

public:
    map<char,vector<char>> m{{'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> letterCombinations(string digits) {

        vector<string> res;
        if(digits.size()==0)
            return res;

        backtracking("",0,digits,res);

        return res; 
    }

    void backtracking(string tmp, int i,string s,vector<string>& res )
    {
        if(tmp.size()==s.length())
        {
            //cout<<tmp<<endl;
            res.push_back(tmp);
            return;
        }

        vector<char> v=m[s[i]];

        for(int j=0;j<v.size();j++)
        {
            
            backtracking(tmp+v[j],i+1,s,res);
        }

        return;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容