17. 电话号码的字母组合
给定一个仅包含数字
2-9的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:
输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
说明: 尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。
代码实现
#include<map>#include<string>class Solution {public:map<char,string> numMap;vector<string> res;string ori_digits;int digits_len;void dep(string cur,int index){if(index == digits_len){res.push_back(cur);return;}char map_index = ori_digits[index];int bra_len = numMap[map_index].length();for(int i=0;i<bra_len;i++){string acc = cur + numMap[map_index][i];dep(acc,index+1);}}vector<string> letterCombinations(string digits) {ori_digits = digits;digits_len = digits.length();if(digits_len == 0)return res;numMap['2']="abc";numMap['3']="def";numMap['4']="ghi";numMap['5']="jkl";numMap['6']="mno";numMap['7']="pqrs";numMap['8']="tuv";numMap['9']="wxyz";dep("",0);return res;}};
示例: