leetcode 142:reverse-integer

题目描述

将给出的整数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     }
原文地址:https://www.cnblogs.com/qingjiaowoxiaoxioashou/p/13490403.html