Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent. Return the answer in any order.
A mapping of digit to letters (just like on the telephone buttons) is given below. Note that 1 does not map to any letters.
Example 1:
Input: digits = "23"
Output: ["ad","ae","af","bd","be","bf","cd","ce","cf"]
Example 2:
Input: digits = ""
Output: []
Example 3:
Input: digits = "2"
Output: ["a","b","c"]
Solution : (Backtracking)
class Solution
{
public:
void combine(vector<string> &res, string a, string b)
{
string k = a;
for (int i = 0; i < b.size(); i++)
{
res.push_back(k + b[i]);
}
return;
}
vector<string> letterCombinations(string digits)
{
vector<string> s{"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
vector<string> res;
if (digits.length() == 0)
{
return res;
}
string a = s[digits[0] - 48];
string k = "";
for (int i = 0; i < a.length(); i++)
{
k = k + a[i];
res.push_back(k);
k = "";
}
for (int i = 1; i < digits.length(); i++)
{
vector<string> v;
for (int j = 0; j < res.size(); j++)
{
combine(v, res[j], s[digits[i] - 48]);
}
res.clear();
res = v;
}
return res;
}
};