初始方法:
class Solution {
public:
int reverse(int x) {
int reverse=0;
bool if_neg=0; //没有必要
if (x<0){
if_neg=1;
}
x=abs(x);
int curr_digit=0;
while(x!=0){
curr_digit=x%10;
x=int(x/10); //c++整数除法,没有float的自动转换
reverse=reverse*10+curr_digit;
}
if(if_neg==1){
reverse=-reverse;
}
return(reverse);
}
};
- 没有必要设置正负号位,在这个版本的c++里%是可结果为负的。
- 没有对于是否溢出的判断,溢出的发生是在对于reverse重新赋值的时候完成的。
- c++的整数除法还是整数。
class Solution {
public:
int reverse(int x) {
int reverse=0;
int curr_digit=0;
while(x!=0){
curr_digit=x%10;
x/=10;
if(reverse>INT_MAX /10|| reverse==INT_MAX/10 && curr_digit>7) return 0;
if(reverse<INT_MIN/10|| reverse==INT_MIN/10&& curr_digit<-8) return 0;
reverse=reverse*10+curr_digit;
}
return(reverse);
}
};