题目:
电话号码 ====手机键对应的字母===单词
初解:开始想到的是循环的找,一堆for,因为要生成单词,所以要建立字典等。
看完解法之后发现的确是最笨的方法,很“丑”。。。
首先:再长的电话号码都可以通过两个循环来找到所有的单词,一个循环A用来定位电话号码的某位,一个被A嵌套的循环B用来对A定位的数字后的所有数字进行叠加的循环
直接循环法代码如下:
int k = n-1 和 while循环 是精华:
1、k的赋值保证循环从最后一位开始;
2、break保证每变化一次都有从后往前的循环;
3、answer[k]=0和k--保证了循环的重新开始和从后往前的顺序。
注释段的代码表示的是从后往前的循环顺序,非住时段的代码是从前往后的循环顺序。
递归实现法代码如下:
相对简单,但是要理解过程。对每一位的处理过程是一样的。
《编程之美》的看、敲和整理是三个完全不同的理解过程和层次,一开始觉得看完就懂了,敲代码的时候发现还需要看书,以后敲完就懂了,发现整理的时候还是不行。
这道题的两部分代码基本都是从书上抄的,我很不确定合上书我是否还能记得写法,看懂和会用还是有差距的
要加油!


被折叠的 条评论
为什么被折叠?



