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"].
Note:
Although the above answer is in lexicographical order, your answer could be in any order you want.
Code:
<span style="font-size:14px;">class Solution {
public:
void generater(vector<string> &results, const string &digits, const int &length, int index, string str) {
if (index == length) {
results.push_back(str);
return;
}
if (digits[index] == '2') {
generater(results, digits, length, index+1, str+"a");
generater(results, digits, length, index+1, str+"b");
generater(results, digits, length, index+1, str+"c");
} else if (digits[index] == '3') {
generater(results, digits, length, index+1, str+"d");
generater(results, digits, length, index+1, str+"e");
generater(results, digits, length, index+1, str+"f");
} else if (digits[index] == '4') {
generater(results, digits, length, index+1, str+"g");
generater(results, digits, length, index+1, str+"h");
generater(results, digits, length, index+1, str+"i");
} else if (digits[index] == '5') {
generater(results, digits, length, index+1, str+"j");
generater(results, digits, length, index+1, str+"k");
generater(results, digits, length, index+1, str+"l");
} else if (digits[index] == '6') {
generater(results, digits, length, index+1, str+"m");
generater(results, digits, length, index+1, str+"n");
generater(results, digits, length, index+1, str+"o");
} else if (digits[index] == '7') {
generater(results, digits, length, index+1, str+"p");
generater(results, digits, length, index+1, str+"q");
generater(results, digits, length, index+1, str+"r");
generater(results, digits, length, index+1, str+"s");
} else if (digits[index] == '8') {
generater(results, digits, length, index+1, str+"t");
generater(results, digits, length, index+1, str+"u");
generater(results, digits, length, index+1, str+"v");
} else if (digits[index] == '9') {
generater(results, digits, length, index+1, str+"w");
generater(results, digits, length, index+1, str+"x");
generater(results, digits, length, index+1, str+"y");
generater(results, digits, length, index+1, str+"z");
}
}
vector<string> letterCombinations(string digits) {
const int length = digits.size();
vector<string> results;
generater(results, digits, length, 0, "");
return results;
}
};</span>