给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

示例 1:
输入:digits = "23" 输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]
示例 2:
输入:digits = "" 输出:[]
示例 3:
输入:digits = "2" 输出:["a","b","c"]
提示:
0 <= digits.length <= 4digits[i]是范围['2', '9']的一个数字。
/*** 电话号码的组合*/
const string letterMap[10] = {"", // 0"", // 1"abc", // 2"def", // 3"ghi", // 4"jkl", // 5"mno", // 6"pqrs", // 7"tuv", // 8"wxyz", // 9
};
vector<string> result;
string s;
/**** @param digits 字符串* @param index 元素的下标*/
void backtracking(const string &digits, int index) {//1.递归终止条件if (index == digits.size()) {result.push_back(s);return;}//2.将index对应的字符转换为数字int digit = digits[index] - '0';//3.获取对应的字符集string letter = letterMap[digit];for (int i = 0; i < letter.size(); ++i) {//依次添加字符s.push_back(letter[i]);//递归下一个字符backtracking(digits, index + 1);//回溯s.pop_back();}
}vector<string> letterCombinations(string digits) {if (digits.size() == 0){return result;}backtracking(digits, 0);
}