先上问题:
思路:这道题非常类似于回文数的数字解法,逐个取数即可。
重点在于限制输出数值范围,第一种直接限制数值范围
int reverse(int x) {
int temp,result=0;;
if(x>1534236461||x>=2147483642||x<(-2147483641)) return 0;
while(x){
temp=x%10;
x=x/10;
result=result*10+temp;
}
if(result>2147483642||result<(-2147483641)) return 0;
return result;
}
第二种做法是将int先转换为long,运算之后在判断范围(INT_MAX,INT_MAX)
int reverse(int x) {
long temp,result=0;
while(x){
temp=x%10;
x=x/10;
result=result*10+temp;
}
if(result>INT_MAX||result<INT_MIN) return 0;
return result;
}