给出一个仅包含数字的字符串,给出所有可能的字母组合。
数字到字母的映射方式如下:(就像电话上数字和字母的映射一样)
Input:Digit string "23"Output:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
注意:虽然上述答案是按字典序排列的,但你的答案可以按任意的顺序给出
解析:
枚举递归
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]);
}
}
};