题目:
j将一个 32 位的有符号整数,要将这个整数中每一位数字进行反转。
假设我们的环境只能存储得下 32 位的有符号整数,第1位为符号位和后32位,其数值范围为 [−2^31 , 2^31 − 1]。
根据这个假设,如果反转后整数溢出那么就返回 0。
例:
输入: 12345
输出: 54321
解析:
第1位为符号位和后32位,其数值范围为 [−2^31 , 2^31 − 1],即[ −2147483648 ~ 2147483647 ]。
超过这个范围就溢出,所以我们要判断,如果前8位相等,最后一位整数不大于7,负数不小于 -8。
如果它前8位就大于临界值的前8位,直接返回0 。
函数代码:
int reverse(int x){
int res = 0;
int sum = 0;
while (x != 0)
{
res = x % 10;
x /= 10;
if (sum > 214748364 || (sum == 214748364 && res > 7))
return 0;
if (sum < -214748364 || (sum == -214748364 && res < -8))
return 0;
sum = sum * 10 + res;
}
return sum;
}
}
版权声明:本文为weixin_51136573原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。