Given a digit string, return all possible letter combinations that the number could represent.
A mapping of digit to letters (just like on the telephone buttons) is given below.
Input:Digit string "23" Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
我:之前对vector的理解不太对,导致了插入有问题。其实算法思路还是正确的。
class Solution {
public:
vector<string> convert(string digits)
{
vector<string> s;
for(int i=0;i<digits.size();i++)
{
switch(digits[i])
{
case '2': s.push_back("abc");;break;
case '3': s.push_back("def");break;
case '4': s.push_back("ghi");break;
case '5': s.push_back("jkl");break;
case '6': s.push_back("mno");break;
case '7': s.push_back("pqrs");break;
case '8': s.push_back("tuv");break;
case '9': s.push_back("wxyz");break;
}
}
return s;
}
void letter(vector<string>& r,vector<string>& d,int kth,string& temp)
{
if(d.size()==0)
return;
else if(kth==d.size())
{
r.push_back(temp);
return;
}
for(string::iterator itr=d[kth].begin();itr<d[kth].end();itr++)
{
//string dk=d[kth];
temp.push_back(*itr);
letter(r,d,kth+1,temp);
temp.pop_back();
}
}
vector<string> letterCombinations(string digits) {
vector<string> d=convert(digits);
string temp;
vector<string> r;
letter(r,d,0,temp);
return r;
}
};