题目描述
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
运行示例
输入: 123
输出: 321
输入: -123
输出: -321
输入: 120
输出: 21
大体思路
- 设a为反转之后的结果(初始值为0),m为x的最后一位数
- 当x值不为0时,依次取最后一位数m,并去掉末位
- a = a * 10 + m得到反转数
- 其数值范围为 [pow(-2,31), pow(2,31) − 1],如果反转后整数溢出那么就返回 0
代码实现
class Solution {
public:
int reverse(int x) {
long a = 0;
while (x != 0)
{
int m = x % 10; //取最后一位数
x = x / 10; //去掉最后一位
a = a * 10 + m;
if (a > pow(2,31)-1||a < pow(-2,31))
return 0;
}
return a;
}
};