题目要求:
给定一个 32 位有符号整数,将整数中的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储 32 位有符号整数,其数值范围是。根据这个假设,如果反转后的整数溢出,则返回 0。
C++代码1:
#define INT_MAX 2147483647
#define INT_MIN (-INT_MAX-1)
class Solution {
public:
int reverse(int x) {
long result = 0;
while(x)
{
result = result*10 + x % 10;
x /= 10;
}
return (result > INT_MAX || result < INT_MIN)? 0 : result;
}
};
结果:
C++代码2:
逻辑和代码1是一样的,只是分步写,比较直观
#define LIMIT_MAX 2147483647
#define LIMIT_MIN (-LIMIT_MAX-1)
class Solution {
public:
int reverse(int x) {
bool Is_negative=false;
if(x<0)
{
x=x*(-1);
Is_negative=true;
}
long result=0;
while(x)
{
result=result*10+x%10;
x = x/10;
}
if(Is_negative)
{
result=result*(-1);
if(result<LIMIT_MIN)
return 0;
}
if(result>LIMIT_MAX)
{
return 0;
}
return result;
}
};
结果:
结果也一模一样