《Programming Interviews Exposed》 中的一道递归题:Telephone number to words
来源:互联网 发布:大数据怎么算平均年龄 编辑:程序博客网 时间:2024/06/09 22:40
题目:
电话键盘上通常一个数字会对应几个字母,如2->"ABC",3->“DEF”,等等,给定一个电话号码,输出所有可能的字母组合。如"866-2665"的一种字母组合是"TOOCOOL",要求输出全部。
解法:
与求前排列的递归类似。
#include <iostream>#include <vector>#include <string>using namespace std;class Solution {public: void TelephoneWords( vector<string> & numberToLetter, string & number ) { string words = ""; PrintWords(numberToLetter, number, 0, words); return; } void PrintWords( vector<string> & numberToLetter, string & number, size_t start, string & words ) { if(start == number.length()) { cout << words << endl; return; } if( number[start]-'0' >= 0 ) { for(size_t i = 0; i < numberToLetter[number[start]-'0'].length(); i++) { words.insert(words.end(), numberToLetter[number[start]-'0'][i]); PrintWords(numberToLetter, number, start+1, words); words.erase(words.length()-1, 1); } } else{ words.insert(words.end(), '-'); PrintWords(numberToLetter, number, start+1, words); words.erase(words.length()-1, 1); } }};int main(int argc, const char * argv[]){ // insert code here... vector<string> numberToLetter; numberToLetter.push_back("0"); numberToLetter.push_back("1"); numberToLetter.push_back("ABC"); numberToLetter.push_back("DEF"); numberToLetter.push_back("GHI"); numberToLetter.push_back("JKL"); numberToLetter.push_back("MNO"); numberToLetter.push_back("PRS"); numberToLetter.push_back("TUV"); numberToLetter.push_back("WXY"); string number = "497-1927"; Solution s; s.TelephoneWords(numberToLetter, number); return 0;}
0 0
- 《Programming Interviews Exposed》 中的一道递归题:Telephone number to words
- Programming Interviews Exposed: Secrets to Landing Your Next Job
- 程序员面试攻略(第二版) Programming Interviews Exposed-Secrets to Landing Your Next Job,Second Edition
- 读书笔记01 Programming Interviews Exposed 3rd ed
- IT Security Interviews Exposed: Secrets to Landing Your Next Information Security Job
- LeetCode Integer to English Words 递归
- 一道递归题
- acdream 1188 telephone number 模拟
- A Practical Guide to Quantitative Finance Interviews
- 一道递归的好题
- 一道循环递归笔试题
- 解一道递归调用题
- 递归的一道简单题
- 一道简单的递归题
- [Dynamic Programming]Recursion/Non-recursion to find the max number
- Telephone
- 每日一道算法题:Single Number I
- 一道TCL的笔试题---递归
- C++ make_heap,push_heap,pop_heap,sort_heap(以最大的K个数为例)
- Word Ladder
- Vim插件YouCompleteMe翻译之 README.md(Part I)
- 嵌入式环境搭建之samba
- Ubuntu下搭建嵌入式环境
- 《Programming Interviews Exposed》 中的一道递归题:Telephone number to words
- 分片(Sharding)的全局ID生成
- LeetCode - Pow
- 排序算法粗略总结
- 从1到N整数中1出现的次数--我的代码
- 继承
- VS2012如何通过ODBC连接到
- 继承中的构造与析构
- 【C++】切换灯的状态