题目:给一个数字串,对应于手机上的编码方式,求可能的编码结果。
分析:简单的递归(组合)问题,已AC。
class Solution
{
public:
vector<string> letterCombinations(string digits)
{
vector<string> res;
string path;
select(path,digits,0,res);
return res;
}
private:
void select(string &path, string &digits,int depth,vector<string> &res)
{
const string key[]={"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
if(depth==digits.size())
{
res.push_back(path);
return;
}//递归跳出
int index=digits[depth]-'2';
for(int i=0;i<key[index].size();++i)
{
char ch=key[index][i];
path+=ch;
select(path,digits,depth+1,res);
path=path.substr(0,path.size()-1);//注意substr的用法。
}
}
};