Reverse Integer
非常简单的题,难点在于溢出问题。就是这个溢出问题真是折腾死我了。。。
首先确定两个宏
INT_MAX 和 INT_MIN 来表示int型所表示的最大和最小。
当然,网上有大神自己定义了(基础知识真是太弱渣了)
#define INTMAX (int)0x7fffffff
#define INTMIN (int)0x80000000
在一个一直没有想到就是:
先用long long int 型来保存数据,然后再进行int型的溢出判断。
这道题的精髓就在于上面两点吧。
代码如下:
#define INTMAX (int)0x7fffffff
#define INTMIN (int)0x80000000
class Solution {
public:
int reverse(int x) {
int num;
long long int sum=0;
while(x!=0)
{
num = x%10;
sum = sum*10 + num;
x=x/10;
}
/*下述两种方法都行*/
if(sum>INT_MAX || sum < INT_MIN)
return 0;
//if(sum > INTMAX || sum < INTMIN)
// return 0;
return sum;
}
};