题目要求:
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
思路并不难想,这题的难点主要在于溢出的问题,如果溢出需要返回0。因此首先需要得到int类型的最大值和最小值。经过网上查资料,找到两种方法。
第一种是用#include<limits>头文件,然后使用numeric_limits<int>::max(),numeric_limits<int>::min()函数分别得到int的最大值和最小值
第二种是自己算,const int max = ~(unsigned int)0 /2; const int min = -max -1;(为什么是这样算请参考 http://www.clanfei.com/2012/10/1659.html)
int reverse(int x)
{
const int max = ~(unsigned int)0 /2;
const int min = -max -1;
long long ans = 0;
while(x != 0)
{
int t = x % 10;
ans = ans*10 + t;
if(ans > max || ans < min){
return 0;
}
x /= 10;
}
return ans;
}