倒序输出一个整数是很多朋友编程入门都会遇到的练习题,那么我们该如何去实现它呢?其实单纯说代码怎么实现是很简单的,但是开发者不应该只注重代码实现而不去管解题思路和算法设计思想,这里,我就我所学知识分享一下该问题的几个实现方法
利用基本运算符取余
假设输入一个整数a=123456,如果倒序输出就是654321;这里我们首先很容易想到用循环来实现,从最后面一位起,往左每次输出一位,那么问题是怎么去让他往左每次输出一位呢?对,对整数用10取余,因为我们用的整数都是十进制的,所以用10取余后,就会剩下个位,123456第一次取余结果是6,那么下一次循环怎么办呢?怎么让123456变成12345就好了。对,就是这个思路,我们直接对将123456除以10得到12345.6,得到的是浮点数,怎么办呢?
还记得int的隐式转换么?12345.6转换为int后,小数点后面的会丢失,只保留整数。OK,刚好利用这个特性就可以实现了。
转换为字符处理
上面讲的方法是最基本的方法,很多初学者应该都有接触过,下面这个方法就是将整型转换为字符串来处理,利用一些字符串处理函数,这个可能比上一个方法用到的知识更多一些。
1 . 第一个用到的是逆序迭代器
2 . 第二个用到的是字符串截取,从最后一位开启往前截取
3 . 把整数转换为字符数组再利用循环从后往前
通过字符数组和栈实现
一想到逆序我们很自然会想到栈这个先进后出的数据结构,那么这个问题虽然用不到栈这么复杂的技术,但是这也未尝不是一个思路,一个问题多种实现方式,从中寻求最简洁最快速的方法不正是算法开发的魅力么?
该方法的思路是:将整数转换为字符数组然后将数组逐一入栈,最后再逐一出栈,这样就实现了逆序的输出。
总结
一个简单的算法问题,我给出了上面几个解决方案,但是就实用性、简便性和效率肯定是第一个,为什么又忍不住写后面几种方法呢?其实我们在日常的开发工作中,一个业务需求的实现我们要做的不仅仅只想办法去实现它,而是尽可能想更多的方法,然后以最优的方法去解决它。
最后,如果你想学C/C 可以私信小编“01”获取素材资料以及开发工具和听课权限哦!