首先进行负数的判断,如果为负数,则取反,并且设置一个符号判别为is_positive.
在判断是否翻转为无效的数,如100,直接100/100运算。
最后判断溢出,设置y为long 型,如果翻转之后long与int型不相等则为溢出。
class Solution {
public:int reverse(int x) {
int N=x%10;
long y=0;
bool is_positive=x>0?0:1;
if(is_positive){//判断为负数
x=-x;
}
while(!N&&x/10){//判断是否为无效
x=x/10;
N=x%10;
}
while(x){//转换
y=10*y+x%10;
x=x/10;
}
if (y != (int)y){ //溢出处理
return 0;
}
if(is_positive){
y=-y;
}
return y;
}
};