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.
solution: 递归求下一位数字的遍历,当递归到最后一个数字,将结果push_back到目标字符串数组。
class Solution {
public:
void qemutation(vector<string> num2ch, vector<string>& res, string digits, string& result, int index)
{
if(index == digits.length())
{
res.push_back(result);
return;
}
int num = digits[index] - '0';
string str = num2ch[num];
for( int i = 0; i < str.length(); i++ )
{
string temp = result;
result = result + str.at(i);
qemutation(num2ch, res, digits, result, index+1);
result = temp;
}
}
vector<string> letterCombinations(string digits) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<string>res;
//if(digits == "")
// return res;
string result = "";
int index = 0;
vector<string>num2ch(10,"");
num2ch[0] = " ";
num2ch[1] = "";
num2ch[2] = "abc";
num2ch[3] = "def";
num2ch[4] = "ghi";
num2ch[5] = "jkl";
num2ch[6] = "mno";
num2ch[7] = "pqrs";
num2ch[8] = "tuv";
num2ch[9] = "wxyz";
qemutation( num2ch, res, digits, result, index);
return res;
}
};