首页 > 代码库 > [LeetCode] Letter Combinations of a Phone Number 回溯

[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] Letter Combinations of a Phone Number 回溯