题目:
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.
程序:
class Solution {
public:
vector<string> res;
string tmp;
map<int, string> num2alp = {{2, "abc"}, {3, "def"}, {4, "ghi"}, {5, "jkl"}, {6, "mno"}, {7, "pqrs"}, {8, "tuv"}, {9,"wxyz"}};
vector<string> letterCombinations(string digits) {
if(digits.empty()){
res.push_back(tmp);
return res;
}
else
getStr(digits, 0, tmp);
return res;
}
void getStr(string digits, int idx, string tmp){
if(idx == digits.size())
res.push_back(tmp);
int im = digits[idx] - '0';
for(int i = 0; i < num2alp[im].size(); ++i){
getStr(digits, idx + 1, tmp + num2alp[im][i]);
}
}
};
点评:
使用递归进行解答