原题链接:Leecode 17. 电话号码的字母组合
自己写的代码:
class Solution {
public:
vector<vector<string> > m={{"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"}};
vector<string> fun(vector<string> & res,string digits,int p)
{
if(p==digits.size())
return res;
int n=digits[p]-'0'-2;
int num=res.size();
//将res容器中每一个元素与新数字代表的元素结合
for(int i=0;i<num;i++)
{
for(int j=0;j<m[n].size();j++)
{
res.push_back(res[i]+m[n][j]);
}
}
//将原来res容器中的元素删除,保留新组合的元素
res.erase (res.begin (),res.begin ()+num);
//继续组合
fun(res,digits,p+1);
return res;
}
vector<string> letterCombinations(string digits) {
vector<string> res;
if(digits.size()==0)
return res;
int n=digits[0]-'0'-2;
//先将第一个数字代表的字母存入容器
for(int i=0;i<m[n].size();i++)
{
res.push_back(m[n][i]);
}
return fun(res,digits,1);
}
};