您的位置:首页 > 其它

17. Letter Combinations of a Phone Number

2017-12-19 12:26 197 查看
1、题目描述

给一个数字组成的字符串,返回所有的它可以表示的字母组合。

2、思路

递归。或者回溯。

3、代码

class Solution {
public:
vector<char>v[10];
void prework(){
for(int i=2;i<=6;i++){
for(int j=0;j<3;j++)
v[i].push_back(char((i-2)*3+j+'a'));
}
v[7].push_back('p');
v[7].push_back('q');
v[7].push_back('r');
v[7].push_back('s');
v[8].push_back('t');
v[8].push_back('u');
v[8].push_back('v');

v[9].push_back('w');
v[9].push_back('x');
v[9].push_back('y');
v[9].push_back('z');
}
vector<string> letterCombinations(string digits) {
vector<string>ans;
if(digits=="")
return ans;
prework();
return getans(digits);
}
vector<string>getans(string digits){
int n = digits.size();
vector<string>ans;
if(n==0){
ans.push_back("");
return ans;
}

int t = int(digits[0]-'0');
digits = digits.substr(1);
vector<string>v1 = getans(digits);
int m=v1.size();
for(int i=0;i<m;i++){
for(int j=0;j<v[t].size();j++){
string a = v1[i];
a=v[t][j]+a;
ans.push_back(a);
}

}
return ans;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Backtracking String