Reverse Integer
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
解决此问题时,需要注意以下几点情况:
– –(1)考虑越界情况,32位int范围为(-2^32)~(2^32-1):(-2147483648~2147483647) ,
//Assume the input is a 32-bit integer, then the reverse of 1000000003 overflows.分两种情况,1/当输入是(-2^32)时,求绝对值时就已经溢出,直接返回..2/如1000000003之类的数,反转后溢出
– –(2)INT_MIN和INT_MAX系统头文件中就已经定义了,可以直接使用。
代码
classSolution {
public:
int reverse(int x) {
bool flag=true;
if(x<0)
{
if(x<=INT_MIN) return 0;
x=-x;
flag=false;
}
int num=x%10;
x=x/10;
while(x)
{
if(num>INT_MAX/10)return 0;//不能取等号
num=num*10+x%10;
x=x/10;
}
if(!flag)
return -num;
return num;
}
};