题目描述:
给出一个32位有符号整数,你需要你需要将这个整数中的每位数字进行反转:
题目解析:
该题是一个简单题。可以采用纯数学的方式来解答。具体思路如下:
具体代码如下:
class Solution{
public:
int reverse(int x){
int ans =0; //保存反转后的逐步中间结果
while(x) //表示x不为0
{
int res = x%10; //res表示取余数
if((ans>INT_MAX/10)||(ans==INT_MAX/10&&res>7))
{return 0;} //表示最大的数已经溢出了,此时ans为倒数第二位的结果,且7是32位二进制数的个位数2(31)-1
if((ans<INT_MIN/10)||(ans==INT_MIN/10&&res<-8))
{return 0;} //表示最小的数溢出,此时ans为倒数第二位的结果,且8是32位二进制数的个位数2(31),开始位为符号位
ans = ans*10+ res; //逆转数的常规操作
x/=10; //x减小10背,直到为0
}
return ans;
}
};