1.Letter Combinations of a Phone Number
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.
Example:
Input:Digit string "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
code:
class Solution {
public:
vector<string> letterCombinations(string digits) {
map<char, string> keyboard;
keyboard.insert(pair<char, string>('2', "abc"));
keyboard.insert(pair<char, string>('3', "def"));
keyboard.insert(pair<char, string>('4', "ghi"));
keyboard.insert(pair<char, string>('5', "jkl"));
keyboard.insert(pair<char, string>('6', "mno"));
keyboard.insert(pair<char, string>('7', "pqrs"));
keyboard.insert(pair<char, string>('8', "tuv"));
keyboard.insert(pair<char, string>('9', "wxyz"));
if (digits.size() == 0)
{
return vector<string>{};
}
return letterCombinationsMain(digits, keyboard);
}
vector<string> letterCombinationsMain(string digits,map<char,string> keyboard)
{
if (digits.size() == 1)
{
vector<string> res;
string str = keyboard[digits[0]];
for (int i = 0; i < str.size(); i++)
{
char temp[2];
temp[0] = str[i];
temp[1] = '\0';
res.push_back(temp);
}
return res;
}
else
{
vector<string> res;
vector<string> temp;
int size = digits.size();
string str = keyboard[digits[size - 1]];
temp = letterCombinationsMain(digits.substr(0, size - 1),keyboard);
for (int i = 0; i < str.size(); i++)
{
for (int j = 0; j < temp.size(); j++)
{
res.push_back(temp[j] + str[i]);
}
}
return res;
}
}
};