给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123输出: 321
示例 2:
输入: -123输出: -321
示例 3:
输入: 120输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
先思考一下,后面我会给出一个解题思路~?
这道题主要考察的是数字反转以及边界处理,而我们可能对字符串的反转更加熟悉,所以我们可以先把数字转出字符串,主要思路如下:
1 )用flag记录下数字的符号,并将数字取绝对值,使用str转换为字符串;
2 )利用str[::-1]对字符串进行反转,并用int转回数字,乘以flag得到结果;
3 )做好结果的边界处理,如果溢出,返回0。
Python实现:
def reverse(x):
flag = -1 if x < 0 else 1
res = flag * int(str(abs(x))[::-1])
return res if (-2**31)<=res<=(2**31-1) else 0