题目描述
将给出的整数x翻转。
例1:x=123,返回321
例2:x=-123,返回-321
你有思考过下面的这些问题么?
如果整数的最后一位是0,那么输出应该是什么?比如10,100你注意到翻转后的整数可能溢出吗?假设输入是32位整数,则将翻转10000000003就会溢出,你该怎么处理这样的样例?抛出异常?这样做很好,但是如果不允许抛出异常呢?这样的话你必须重新设计函数(比如添加一个额外的参数)。
题目分析:
这个题目比较简单,常规题。主要就是对符号的处理和如果数据溢出的处理。如果数据小于0,则一定为负数,负数转换了以后还是负数。数据溢出时加了判断 if(reverseNum >= INT_MAX),如果溢出,返回0.
代码如下:
1 int reverse(int x) { 2 long long reverseNum = 0; 3 int flag = 1; 4 if(x < 0) 5 flag = flag * -1; 6 x = x*flag; 7 while(x > 0) 8 { 9 reverseNum = reverseNum * 10 + x%10; 10 x /= 10; 11 if(reverseNum >= INT_MAX) 12 return 0; 13 } 14 return reverseNum * flag; 15 }