《Programming Interviews Exposed》 中的一道递归题:Telephone number to words
题目:
电话键盘上通常一个数字会对应几个字母,如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;
}
《Programming Interviews Exposed》 中的一道递归题:Telephone number to words相关推荐
- 最近面试,笔试题中的一道sql题
找出成绩都为80分以上学生名单 名字 课目 分数 小明 数学 86 小明 语文 84 小李 数学 ...
- 一道算法题跟大家分享
无意中看到一道算法题,拿出我的解法与大家分享. 题目:输出1,2,3,4四个数字能组成的互不相同且无重复的三位数并统计满足条件的三位数个数 大家先想想,再看答案吧. View Code 1 /// & ...
- 简单的一道 SQL 题,谈如何提高编程水平
点击蓝色"有关SQL"关注我哟 加个"星标",天天与12238人一起快乐成长 前两天发了一篇<SQL的3列4种对比方法>,近500 阅读.一个月没更 ...
- 期末考试中微积分的证明题的分析:Taylor级数展开
简 介: 对于 今年期末微积分考试试题:看看你能够在两个小时内做对几道题? 中的最后一道证明题进行了初步的分析.利用函数的Taylor级数展开,证明给定的积分系数趋近于0.但是由于原题中的图片过于模糊 ...
- 第三届山西省赛1004 一道大水题(scanf)
一道大水题 时间限制: C/C++ 2000ms; Java 4000ms 内存限制: 65535KB 通过次数: 44 总提交次数: 1020 问题描述 Dr. Pan作为上兰帝国ACM的总负责人, ...
- 记一次面试过程中的Python编程题
这几天面试过程中遇到一道Python编程题,题目如下: 面试中遇到一个Python编程问题:一个字符串,将里面的数字取出来,如果第一个数字前面是+,表示整个数字为正数,如果第一个数字前面是-,表示数字 ...
- 每天一道算法题系列十七之电话号码的字母组合
每天一道算法题系列: 来源:力扣(LeetCode) 本题链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-numb ...
- 每日一道SQL题(第N高的薪水)
关于数据库中写sql的问题,感觉最常见的就是薪水方面的 拿到一道sql题,首先感觉一下,可能会出现的问题,比如这道题,薪水问题,薪水会不会出现同名同薪的问题??要怎么考虑? 又比如mysql怎么写?如 ...
- 【每日一道智力题】之 药瓶毒鼠鼠
题目: 有1000个一模一样的瓶子,其中有999瓶是普通的水,有1瓶是毒药.任何喝下毒药的生命都会在一星期之后死亡.现在你只有10只鼠鼠和1个星期的时间,如何检验出哪个瓶子有毒药? 这是一道经典的面试 ...
最新文章
- latex中插入代码
- Android 设备管理API概览(Device Administration API)
- 机器学习研究今年谁最火?几何深度学习成最大赢家,Reddit为提名选手吵成一团...
- uni-app接口封装
- python运行列表的结果不同_python 3 代码一模一样,出现运行结果不同的情况(只是不以为一样而已)...
- 读取exchange邮件的未读数(转载)
- 简单比对照片是否相同_小新说法 | 如何认定商标是否侵权?
- 指令由电子计算机,电子计算机主要是以
- java程序设计图形题_面向对象与Java程序设计基础题目:设计一个程序可以一计算平面图形的面积和立体图形的体积。1.使用interface关键...
- apple apns http2 java调用
- hbase1.1.1 连接集群_hbase1.2.3集群搭建
- 编译OpenCV:cv2.cpp:23:33: fatal error: numpy/ndarrayobject.h: 没有那个文件或目录
- BZOJ3123:[SDOI2013]森林——题解
- 软件开发需要学什么?
- 计算的威力,智慧的传奇——Fabrice Bellard
- 清华操作系统实验lab1
- 视频教程-微信公众号实战(Java版本,带前后台)-微信开发
- 关于iOS推送中点击通知的几点备忘
- L1-054 福到了 (15 分)
- NRF51822蓝牙服务(9)——动态修改设备的名称
热门文章
- js中break、countiun、return、clearintercal clearTimeout的区别
- 从联合国法规《自动车道保持系统ALKS》看自动驾驶汽车交通安全保障及对我们的启示 | 聚焦自动驾驶...
- IBM V3700更换控制器
- 404 bad request
- 力创eda 画布大小_立创EDA快速上手经验篇.docx
- 【甄选靶场】Vulnhub百个项目渗透——项目十六:FristiLeaks_1.3(文件上传,py脚本改写,sudo提权,脏牛提权,源码获取)
- 环保用电监管精准锁定环保设施运行异常企业
- [NET]什么是公网、私网、内网、外网?
- 害死人的ddos,价格屠夫安易ES系列抗DDOS硬件防火墙
- 对数正态lognormal分布图像