手机键盘上的排列组合问题 Letter Combinations of a Phone Number
2013-10-20 17:25
423 查看
题目源自于Leetcode。
题目: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.
思路:这是一个排列组合问题。也是一个子状态空间问题。不容易用循环来解决。比较适合递归的思想来遍历整个状态子空间。
题目中给出的函数声明并不适合作为递归函数,因为递归过程中要不断扩大结果组合,需要把结果作为引用类型的参数,在递归过程中指数级地扩大它。
代码:
题目: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.
思路:这是一个排列组合问题。也是一个子状态空间问题。不容易用循环来解决。比较适合递归的思想来遍历整个状态子空间。
题目中给出的函数声明并不适合作为递归函数,因为递归过程中要不断扩大结果组合,需要把结果作为引用类型的参数,在递归过程中指数级地扩大它。
代码:
class Solution { public: string getstring(int num) { vector<string> map; map.push_back("");//0 map.push_back("");//1 map.push_back("abc");//2 map.push_back("def");//3 map.push_back("ghi");//4 map.push_back("jkl");//5 map.push_back("mno");//6 map.push_back("pqrs");//7 map.push_back("tuv");//8 map.push_back("wxyz");//9 return map[num]; } void fun(vector<string> &result, string digits) { if(digits == "") return; string str = getstring(digits[0] - '0'); int n = result.size(); for(int i=0;i<n;i++) { for(int j=0;j<str.length();j++) { result.push_back(result[0]+str[j]); } result.erase(result.begin()); //注意这里的参数是指针 } fun(result, digits.substr(1)); } vector<string> letterCombinations(string digits) { vector<string> result; result.push_back(""); int n = digits.length(); if (n <= 0) return result; fun(result, digits); return result; } };
相关文章推荐
- Leetcode中的组合排列问题:Permutations,Combinations,Letter Combinations of a Phone Number
- [LeetCode]-Letter Combinations of a Phone Number 电话键盘的字符串组合
- Letter Combinations of a Phone Number:给定数字求出对应的多个字母的组合可能问题
- LeetCode Letter Combinations of a Phone Number 经典组合问题
- leetcode:Letter Combinations of a Phone Number(手机号码的字母组合)
- [LeetCode] Letter Combinations of a Phone Number 电话号码的字母组合
- Letter Combinations of a Phone Number (电话号码字母组合) 【leetcode】
- 17:Letter Combinations of a Phone Number(字母组合的电话号码)
- Leetcode: LetterCombinationsofaPhoneNumber 根据手机按键,给出所有可能的字符串
- LeetCode OJ:Letter Combinations of a Phone Number(数字字母组合)
- LeetCode-17 Letter Combinations of a Phone Number(手机拨码-DFS)
- LeetCode-Letter Combinations of a Phone Number-电话号码字母组合-DFS
- [LintCode] Letter Combinations of a Phone Number 电话号码的字母组合
- LeetCode Letter Combinations of a Phone Number 电话号码组合
- LeetCode 17 Letter Combinations of a Phone Number(电话号码的字母组合)
- leetcode 电话号码的字母组合 Letter Combinations of a Phone Number
- [LeetCode] Letter Combinations of a Phone Number 电话号码的字母组合
- lintcode 中等题:Letter Combinations of a Phone Number 电话号码的字母组合
- Binary Tree Zigzag Level Order Traversal & Partition List & Letter Combinations of a Phone Number
- Letter Combinations of a Phone Number