力扣 7 整数反转
题目
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
思路
int类型的数值范围为 [−2^31, 2^31 − 1]
int的最大值为: 2147483647 INT_MAX
若输入的值为: 1111111111119
反过来变成: 9111111111111 显然溢出
先用long long长整型进行反转,最后判断是否能输出,若不能 return 0
class Solution {
public:
int reverse(int x) {
long long y = x;
int flag = 1;//用flag记录正负
if (y < 0) {
y = -y;
flag = -1;
}
int t = 0;
long long final = 0;
while (y > 0)
{
t = y % 10;
y = y / 10;
final = final * 10 + t;
}
final = final * flag;
if (final > INT_MAX || final < INT_MIN) return 0;//是否在int类型范围内
return final;
}
};