[LeetCode] Letter Combinations of a Phone Number 回溯

Given a digit string, return all possible letter combinations that the number could represent.

A mapping of digit to letters (just like on the telephone buttons) is given below.

Input:Digit string "23"

Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].



这题其实不难,注意好递归传入的参数便可以了。
#include <vector>

#include <string>

#include <iostream>

using namespace std;





class Solution {

public:

    vector<string> letterCombinations(string digits) {

        ret.clear();

        if(digits.size()<=0)

            ret.push_back("");

        else

            help_f(0,digits,"");

        return ret;

    }

    vector<string> ret;

    vector<vector<char> >mp{{' '},

                            {},

                            {'a','b','c'},

                            {'d','e','f'},

                            {'g','h','i'},

                            {'j','k','l'},

                            {'m','n','o'},

                            {'p','q','r','s'},

                            {'t','u','v'},

                            {'w','x','y','z'}};

    void help_f(int nowIdx,string & digits,string curStr)

    {

        if(nowIdx==digits.size()){

            ret.push_back(curStr);

            return ;

        }

        int curNum = int(digits[nowIdx] - '0');

        for(int i =0;i<mp[curNum].size();i++)

            help_f(nowIdx+1,digits,curStr+mp[curNum][i]);

    }

};



int main()

{

    Solution sol;

    vector<string> ret=sol.letterCombinations("");

    for(int i=0;i<ret.size();i++)

        cout<<ret[i]<<endl;

    return 0;

}

 

你可能感兴趣的:(LeetCode)