题目要求:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
分析:因为题目中,要求只能时32位int,反转时不能使用Long,所以我们需要判断是否溢出!
代码中,INT_MAX、 INT_MIN头文件是在limits.h中。
-9~9是不需要反转的!
int reverse(int x) {
if(x/10 == 0)
return x;
int y = 0;
while(x) {
if(y > INT_MAX/10 || y < INT_MIN/10)
return 0;
y = y*10 + (x%10);
x = x / 10;
}
return y;
}
Python实现:
class Solution:
def reverse(self, x: int) -> int:
if x/10 == 0:
return x
str_r = str(x)
if str_r[0] != '-':
str_r = str_r[::-1]
str_r = int(str_r)
else:
str_r = str_r[:0:-1]
str_r = int(str_r)
str_r = -str_r
return str_r if str_r<2**31-1 and str_r>-2**31 else 0