您的位置:首页 > 编程语言 > C语言/C++

Letter Combinations of a Phone Number

2013-07-26 14:40 295 查看

题目

Given a digit string, return all possible letter combinations that the number could represent.

A mapping of digit to letters (just like on the telephone buttons) is given below.



Input:Digit string "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].


Note:

Although the above answer is in lexicographical order, your answer could be in any order you want.

思路

排列组合的递归方法

class Solution {
public:
vector<string> letterCombinations(string digits) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int len = digits.length();
vector<string> result;
string str = "";
myLettercomb(result, str, digits, 0);
return result;
}

void myLettercomb(vector<string> &result, string & str, string &digits, int cur) {
const static string key_maps[10]={"0","1","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
if(cur==digits.length()) {
result.push_back(str);
return ;
}
int num = digits[cur]-'0';
for(int i=0; i<key_maps[num].length(); i++) {
str = str+key_maps[num][i];
myLettercomb(result, str, digits, cur+1);
str.erase(str.length()-1);
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode C++ 递归 DFS