《编程之美》3.2

题目:

电话号码 ====手机键对应的字母===单词

 

初解:开始想到的是循环的找,一堆for,因为要生成单词,所以要建立字典等。

看完解法之后发现的确是最笨的方法,很“丑”。。。

首先:再长的电话号码都可以通过两个循环来找到所有的单词,一个循环A用来定位电话号码的某位,一个被A嵌套的循环B用来对A定位的数字后的所有数字进行叠加的循环

 

直接循环法代码如下:

 

int k = n-1 和 while循环 是精华:

1、k的赋值保证循环从最后一位开始;

2、break保证每变化一次都有从后往前的循环;

3、answer[k]=0和k--保证了循环的重新开始和从后往前的顺序。

注释段的代码表示的是从后往前的循环顺序,非住时段的代码是从前往后的循环顺序。

 

递归实现法代码如下:

 

相对简单,但是要理解过程。对每一位的处理过程是一样的。

 

《编程之美》的看、敲和整理是三个完全不同的理解过程和层次,一开始觉得看完就懂了,敲代码的时候发现还需要看书,以后敲完就懂了,发现整理的时候还是不行。

 

这道题的两部分代码基本都是从书上抄的,我很不确定合上书我是否还能记得写法,看懂和会用还是有差距的

要加油!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值