//回溯法
class Solution {
vector<string> letter_map = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"}; //0-9
vector<string> res = {};
void letterCombine(string digits, int index, string curDigits){
if (digits.length() == 0) return;
if (index >= digits.length()) {
res.push_back(curDigits);
return;
}
string letters = letter_map[digits[index] - '0'];
for (auto c:letters){
letterCombine(digits, index+1, curDigits+c);
}
return;
}
public:
vector<string> letterCombinations(string digits) {
letterCombine(digits, 0, "");
return res;
}
};