Problem:
给定一个带符号的 32 位整数x
,返回x
其数字反转。如果反转x
导致值超出有符号的 32 位整数范围[-2^31, 2^31 - 1]
,则返回0.
Solution:
#define INT_MAX 2147483647
#define INT_MIN -2147483648
int reverse(int x){
if(x>-10&&x<10) return x;
if(x==INT_MIN) return 0;
long number=0,n=x;
if(x<0) x=-x;
while(x){
number+=x%10;
if(number>INT_MAX) return 0;
number*=10;
x=x/10;
}
number/=10;
return n>0 ? number : -number;
}