题目:
思路:
对于这样一个不知道循环次数的题,蛮力肯定是不行的,所以我采用了函数不断迭代的方法。
代码:
class Solution {
public:
vector<string> letterCombinations(string digits) {
string ori[8]={"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
int num=(int)digits[0]-48-2;//char 转 int,也可以用char-'0'
vector<string> first;
if(digits.length()==0)//一定要思维严谨考虑这种特殊情况
{
return first;
}
else
{
first.push_back(""); //后面没有push直接用所以需要初始化一下
}
for(int i=0;i<digits.size();i++)
{
num=(int)digits[i]-48-2;
first=twoMulti(first,ori[num]);
}
return first;
}
vector<string> twoMulti(vector<string> A,string B)
{
vector<string> res;//每次都有一个新的栈储存结果
for(int j=0;j<B.length();j++)
{
for(int i=0;i<A.size();i++)
{
res.push_back(A[i]+B[j]);
}
}
return res;
}
};