题目
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例1
- 输入: 123 输出: 321
示例2
- 输入: -123 输出: -321
示例3
- 输入: 120 输出: 21
注意
- 溢出问题,假设我们的环境只能存储 32 位有符号整数,其数值范围是 [-231, 231-1]([INT_MIN, INT_MAX ])。根据这个假设,如果反转后的整数溢出,则返回 0。
- 计算过程,数值不在 [-231, 231-1]区间报错,使用long类型返回。
代码
class Solution {
public:
int reverse(int x)
{
// 变量定义
long res = 0; // 返回值
// 遍历位数,求翻转整数
while ( x )
{
res = res * 10 + x % 10;
if (res > INT_MAX || res < INT_MIN) return 0;
x = x / 10;
}
return res;
}
};
关于C++整型上下限(INT_MAX 、INT_MIN)相关知识:https://blog.youkuaiyun.com/u012604810/article/details/80290706