一、题目描述
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
二、代码
int reverse(int x) {
long int newnum=0;
while(x!=0)
{
newnum=newnum*10+x%10;
x/=10;
if(newnum>2147483647||newnum<-2147483648)
return 0;
}
return newnum;
}
三、应注意的问题
应该在结果得出之前判断是否溢出
参考给出的题解
方法一:
max=2^31-1;
min=-2^31;
if(newnum>max/10 || (newnum==max/10&&x%10>7))
return 0;
if(newnum<min/10 || (newnum==min/10&&x%10<-8))
return 0;
方法二:设置长整型 long int
具体参见:https://blog.csdn.net/ginwafts/article/details/78488959