# 电话号码的字母组合

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

 

示例 1:

输入:digits = "23"
输出:
["ad","ae","af","bd","be","bf","cd","ce","cf"]

示例 2:

输入:digits = ""
输出:
[]

示例 3:

输入:digits = "2"
输出:
["a","b","c"]

 

提示:

以下程序实现了这一功能,请你填补空白处内容: ```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 ); ```