# 电话号码的字母组合
给定一个仅包含数字 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 <= 4
- digits[i]是范围- ['2', '9']的一个数字。
以下程序实现了这一功能,请你填补空白处内容:
```cpp
class Solution {
public:
    vector str;
    vector ret;
    string getStr( int x ) {
        switch( x ) {
            case 2: return "abc";
            case 3: return "def";
            case 4: return "ghi";
            case 5: return "jkl";
            case 6: return "mno";
            case 7: return "pqrs";
            case 8: return "tuv";
            case 9: return "wxyz";
            default: return "";
        }
    }
    void dfs( string& ans, int k ) {
        if ( k >= str.size() ) {
            ret.push_back( ans );
            return;
        }
        for ( auto& it : str[k] ) {
            ans.push_back( it );
            _____________________;
            ans.pop_back();
        }
    }
    vector letterCombinations(string digits) {
        if ( !digits.size() ) return {};
        for ( auto& it : digits ) 
            str.push_back( getStr( it & 15 ) );
        string ans = "";
        dfs( ans, 0 );
        return ret;
    }
};
```
## template
```cpp
class Solution {
public:
    vector str;
    vector ret;
    string getStr( int x ) {
        switch( x ) {
            case 2: return "abc";
            case 3: return "def";
            case 4: return "ghi";
            case 5: return "jkl";
            case 6: return "mno";
            case 7: return "pqrs";
            case 8: return "tuv";
            case 9: return "wxyz";
            default: return "";
        }
    }
    void dfs( string& ans, int k ) {
        if ( k >= str.size() ) {
            ret.push_back( ans );
            return;
        }
        for ( auto& it : str[k] ) {
            ans.push_back( it );
            dfs( ans, k + 1 );
            ans.pop_back();
        }
    }
    vector letterCombinations(string digits) {
        if ( !digits.size() ) return {};
        for ( auto& it : digits ) 
            str.push_back( getStr( it & 15 ) );
        string ans = "";
        dfs( ans, 0 );
        return ret;
    }
};
```
## 答案
```cpp
dfs( ans, k + 1 );
```
## 选项
### A
```cpp
dfs( ans, k );
```
### B
```cpp
dfs( ans, k - 1 );
```
### C
```cpp
dfs( ans, k + 2 );
```