Leetcode #17 Letter Combinations of a Phone Number

来源:互联网 发布:淘宝注册怎么注册账号 编辑:程序博客网 时间:2024/06/08 16:26

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"].

Note:

Although the above answer is in lexicographical order, your answer could be in any order you want.

很简单,最基础的递归。

void gen(int dep,int len, string s,string ret, vector<string>& ans){     string s1,s2,s3,s4;     if(dep==0){        ans.push_back(ret);        //cout<<ret[0]<<endl;        //cout<<ret[1]<<endl;     }    else{     if(s[len-dep]=='2')     {       s1 = "a";       s2 = "b";       s3 = "c";       s4 = "?";     }     if(s[len-dep]=='3')     {       s1 = 'd';       s2 = 'e';       s3 = 'f';       s4 = '?';     }     if(s[len-dep]=='4')     {       s1 = 'g';       s2 = 'h';       s3 = 'i';       s4 = '?';     }     if(s[len-dep]=='5')     {       s1 = 'j';       s2 = 'k';       s3 = 'l';       s4 = '?';     }     if(s[len-dep]=='6')     {       s1 = 'm';       s2 = 'n';       s3 = 'o';       s4 = '?';     }     if(s[len-dep]=='7')     {       s1 = 'p';       s2 = 'q';       s3 = 'r';       s4 = 's';     }     if(s[len-dep]=='8')     {       s1 = 't';       s2 = 'u';       s3 = 'v';       s4 = '?';     }     if(s[len-dep]=='9')     {       s1 = 'w';       s2 = 'x';       s3 = 'y';       s4 = 'z';     }     gen(dep-1,len,s,ret+s1,ans);     gen(dep-1,len,s,ret+s2,ans);     gen(dep-1,len,s,ret+s3,ans);     if(s4!="?")        gen(dep-1,len,s,ret+s4,ans);    }}vector<string> letterCombinations(string digits) {    vector<string> ans;    string ret;    int len = digits.length();    if(len==0)        return ans;    gen(len,len,digits,ret,ans);    return ans;    }


0 0