给你一个 32 位的有符号整数 x
,返回将 x
中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1]
,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123 输出:321
示例 2:
输入:x = -123 输出:-321
示例 3:
输入:x = 120 输出:21
示例 4:
输入:x = 0 输出:0
提示:
-231 <= x <= 231 - 1
注意边界:-2147483648~2147483647
class Solution {
public:
int reverse(int x) {
const double Max = pow(2.0,31.0)-1;
if(x/10==0) return x;
if(fabs(x*1.0)>Max){
return 0;
}
int arr[10]={0};
int sum = 0;
int key = 1;
if(x<0){
key =-1;
x*=-1;
}
while(x){
arr[sum++] = x%10;
x /= 10;
}
double MMax = pow(10.0,sum*1.0);
int number=0;
for(int i=0;i<sum;i++){
if(fabs(number*MMax)>Max){
return 0;
}
number*=10;
number+=arr[i];
MMax/=10;
}
return number*key;
}
};