code:
class Solution {
public:
int reverse(int x) {
int num=0;
while(x)
{
if(num>INT_MAX/10 || num<INT_MIN/10) return 0;
num = num*10+x%10;
x = x/10;
}
return num;
}
};
这一题最关键的就是溢出!!!!!!
其他的求余数,反转思路都很简单。
【知识点】:
溢出可以通过获取INT_MAX和INT_MIN来辅助判断,INT_MAX=0x7FFFFFFF,INT_MIN=0x7FFFFFFF+1
有整数x,判断是否溢出 if( x>INT_MAX || x<INT_MIN )
若是涉及乘法,比如 num=num*10 ,这时候得出的num值已经溢出并被截取,此时判断是否溢出就要
if (num>INT_MAX / 10 || temp <(INT_MIN) / 10)