求数字的逆序表示
来源:互联网 发布:北京黑马程序员 编辑:程序博客网 时间:2024/05/17 22:00
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
实现数字的逆序输出,这道题本身不难,但是有很多临界条件,特殊情况需要考虑。比如数据的越界等等。具体如下:
Have you thought about this?
Here are some good questions to ask before coding. Bonus points for you if you have already thought through this!
If the integer's last digit is 0, what should the output be? ie, cases such as 10, 100.
Did you notice that the reversed integer might overflow? Assume the input is a 32-bit integer, then the reverse of 1000000003 overflows. How should you handle such cases?
Throw an exception? Good, but what if throwing an exception is not an option? You would then have to re-design the function (ie, add an extra parameter).
一般的实现方法:鲁棒性不强,很多特殊情况没有考虑。public class Solution { public int reverse(int x) { int rst = 0; while(x != 0){ rst = rst * 10 + x % 10; x = x / 10; } return rst; }}上述代码解决了负号问题,但是如果数字倒序后溢出,似乎没有考虑到这些情况。不具鲁棒性。也是很多人容易的犯错。应该继续修改代码,完善代码功能。
考虑到上述等特殊情况,可以先使用字符串来表示数字,然后再把之逆序,最后再以数字的形式输出。实现代码如下:
public class Solution { public int reverse(int x){ String strX = Integer.toString(x); int len = strX.length(); StringBuffer dest = new StringBuffer(len); if(x>=0){ for(int i = len -1; i >= 0 ; i--){ dest.append(strX.charAt(i)); } } else{ dest.append('-'); for(int i = len -1; i >= 1 ; i--){ dest.append(strX.charAt(i)); } }
<span style="white-space:pre"></span>return Integer.parseInt(dest.toString());}}讨论:
代码最后的语句:return Integer.parseInt(dest.toString());如果此时字符串表示溢出,会抛出一个异常。这似乎也不没有解决溢出问题。实际上,可以根据实际需求来提供解决方案。1.如果溢出则抛出异常。 2.使用一个extra parameter来表示数字是否溢出。 3.可以依次打印字符串中的每一个字符,这样即使数字溢出,也能表示出它的逆序。
- 求数字的逆序表示
- C++ 实现求一串数字的逆序数{线性代数里的逆序数}
- 求数字二进制表示中的1的个数
- 逆序输出数字并求最大最小值
- 数字逆序且求个位数乘积
- 颜色的数字表示
- 数字表示的电容
- 对整型数字的处理(求位数,顺序打印,逆序打印)
- 数字字符串的逆序输出
- 实现数字逆序的方法
- 求字符串的逆序数
- 求数组的逆序数
- 求数组的逆序数
- 求逆序数的对数
- 求逆序数的函数
- 求排列的逆序数
- 求排列的逆序数
- 求数组的逆序对数
- IComparer和IComparable的区别
- 安卓利用按钮Button更改的字体大小、字体颜色、背景颜色代码
- netbeans8 EBJ模块中JPA部署问题
- 如何将 Vim 打造成一个成熟的 IDE
- Cocos2dx对精灵的优化
- 求数字的逆序表示
- DEM山体阴影原理以及算法详解
- 《App Store创赢艺术》读后感
- C#程序
- AngularJS初探
- UVA - 10020 Minimal coverage
- 指向常量的指针
- 每日学习笔记(23)
- QT事件