算法原理
INT_MAX 代表int的最大值2147483647
INT_MIN 代表int的最小值-2147483648
所以在将字符串转化为数字,倒置数字等操作时,可以在
temp=temp*10+x%10;
这一步操作之前先进行判断
if(temp>INT_MAX/10) return 0;
//当加之前temp>214748364时,因为下一步temp要*10,所以肯定会超限,直接返回0
if(temp==INT_MAX/10&&x%10>7) return 0;
/*如果temp=214748364时,因为下一步temp*10=2147483640,所以当x%10小于等于7的时候才可以成立,否则就返回0*/
if(temp<INT_MIN/10) return 0;
//如果temp=-2147483640时,因为下一步要*10,所以会超限,直接返回0
if(temp==INT_MIN/10&&x%10<=-8) return 0;
//如果temp=-214748364,与上面同理,当x%10>-8的时候才能成立,否则就不行
temp=temp*10+x%10;
x/=10;
核心代码实现
int temp=0;
while(x){
if(temp>INT_MAX/10) return 0;
if(temp==INT_MAX/10&&x%10>7) return 0;
if(temp<INT_MIN/10) return 0;
if(temp==INT_MIN/10&&x%10<=-8) return 0;
temp=temp*10+x%10;
x/=10;
}
return temp;
}
例题