Letter Combinations of a Phone Number
2014-04-13 16:37
274 查看
class Solution { public: vector<string> letterCombinations(string digits) { //递归 笛卡尔积 vector<string> ret; string keyboard[]={" ","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; if(digits.empty()) { ret.push_back(""); return ret; } if(digits.length()==1) { for(size_t i=0;i<keyboard[atoi(digits.c_str())].length();i++) { string tmp; tmp.push_back(keyboard[atoi(digits.c_str())][i]); ret.push_back(tmp); } return ret; } else { string head=keyboard[digits[0]-'0']; digits.erase(digits.begin(),digits.begin()+1); vector<string> other=letterCombinations(digits); for(size_t i=0;i<head.length();i++) { string tmp; tmp.push_back(head[i]); for(size_t j=0;j<other.size();j++) { ret.push_back(tmp+other[j]); } } return ret; } } };
class Solution { public: vector<string> letterCombinations(string digits) { //迭代 笛卡尔积 vector<string> ret; vector<string> pre; ret.push_back(""); pre=ret; ret.clear(); string keyboard[]={" ","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"}; for(size_t i=0;i<digits.length();i++) { for(size_t j=0;j<pre.size();j++) { for(size_t k=0;k<keyboard[digits[i]-'0'].length();k++) { string tmp; tmp.push_back(keyboard[digits[i]-'0'][k]); ret.push_back(pre[j]+tmp); } } pre=ret; ret.clear(); } return pre; } };
相关文章推荐
- 【乘式还原】 A代表数字0~9中的前5个数字,Z代表后5个数字,请还原下列乘式。
- 对一组数穷尽所有排列的算法
- 第十一周项目2-1-穷举法 输出各色小球个数
- 56-红黄球搭配
- 57-一个互不相同的4位数乘以1位数等于这个4位数的倒叙的数有?
- 59-新郎和新娘问题
- 62-亲密数
- 65-三阶魔幻方阵
- 66-甲说乙说谎,乙说丙说谎,丙说甲乙说谎
- 杭电 2058 The sum problem
- LeetCode | Subsets
- Restore IP Addresses
- Subsets
- 网红试题 2018年刑侦科目推理试题 的程序员解法
- ZigZag Conversion
- 炸弹人--枚举
- 蓝桥杯 回文数(穷举)
- 最大子段和解法及python实现
- python--穷举指定长度的密码
- C/C++:移位密码穷举解密