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

示例 1:
输入:digits = "23" 输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]
示例 2:
输入:digits = "" 输出:[]
示例 3:
输入:digits = "2" 输出:["a","b","c"]
代码如下:
- class Solution {
- public:
- string temp;//定义一个临时数组
- vector
board={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; - vector
res;//存放最终结果的数组 -
- void dfs(int pos,string digits)
- {
- if(pos==digits.size())//pos是数字的下标
- {
- res.push_back(temp);
- return;
- }
- int num=digits[pos]-'0';//获得按键的数字对应board中的字母
- for(int i=0;i
size();i++)//遍历board数组 - {
- temp.push_back(board[num][i]);//将board中的字母放到临时数组里
- dfs(pos+1,digits);//继续递归数字的下一个
- temp.pop_back();//回溯
- }
- }
- vector
letterCombinations(string digits) { - if(digits.size()==0)//digit="",返回[]
- {
- return res;
- }
- dfs(0,digits);
- return res;
- }
- };