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"].
class Solution {
public:
vector<string> convert(string digits)
{
vector<string> s;
string t;
for(int i=0;i<digits.size();i++)
{
switch(digits[i])
{
case '2': s[i].push_back('a');s[i].push_back('b');s[i].push_back('c');;break;
case '3': s[i].push_back('d');s[i].push_back('e');s[i].push_back('f');break;
case '4': s[i].push_back('g');s[i].push_back('h');s[i].push_back('i');break;
case '5': s[i].push_back('j');s[i].push_back('k');s[i].push_back('l');break;
case '6': s[i].push_back('m');s[i].push_back('n');s[i].push_back('o');break;
case '7': s[i].push_back('p');s[i].push_back('q');s[i].push_back('r');s[i].push_back('s');break;
case '8': s[i].push_back('t');s[i].push_back('u');s[i].push_back('v');break;
case '9': s[i].push_back('w');s[i].push_back('x');s[i].push_back('y');s[i].push_back('z');break;
}
}
return s;
}
void letter(vector<string>& r,vector<string>& d,int kth,string& temp)
{
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;
}
};