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.
1 class Solution { 2 public: 3 vector<string> letterCombinations(string digits) { 4 mapping = {"abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"}; 5 vector<string> ret; 6 letterCombinationsCore(digits, "", ret); 7 return ret; 8 } 9 void letterCombinationsCore(string digits, string sub, vector<string> &ret) { 10 if (sub.size() == digits.size()) { 11 ret.push_back(sub); 12 } else { 13 int i = digits[sub.size()] - ‘0‘; 14 for (int j = 0; j < mapping[i - 2].size(); ++j) { 15 sub.push_back(mapping[i - 2][j]); 16 letterCombinationsCore(digits, sub, ret); 17 sub.pop_back(); 18 } 19 } 20 } 21 vector<string> mapping; 22 };
又是一个递归搜索题。
【Leetcode】Letter Combinations of a Phone Number,布布扣,bubuko.com
【Leetcode】Letter Combinations of a Phone Number
原文地址:http://www.cnblogs.com/dengeven/p/3766307.html