递归思想,字符串逐步减短
#include <iostream>
#include <vector>
#include <algorithm>
#include <math.h>
#include <stdio.h>
#include <string>
using namespace std;
string A[10] = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
class Solution {
public:
vector<string> letterCombinations(string digits) {
vector<string> res;
return helper(res,digits);
}
vector<string> helper(vector<string> V, string s)
{
if(s=="")
{
return V;
}
else
{
vector<string> ret;
int num = s[0] - '0';
string s1 = A[num];
if(V.size()==0)
{
for(int i = 0;i<s1.size();i++)
{
string s = "";
s.append(1,s1[i]);
ret.push_back(s);
}
}
else
{
for(int i = 0;i<V.size();i++)
{
for(int j = 0;j<s1.size();j++)
{
string t_s = V[i];
t_s.append(1,s1[j]);
ret.push_back(t_s);
}
}
}
return helper(ret, s.substr(1,s.size()-1));
}
}
};