湖南环保设备公司中企动力网站建设技术支持水果网络营销策划书
题目链接: https://leetcode.cn/problems/reverse-integer/
题目描述:
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231,231−1][−2^{31}, 2^{31} − 1][−231,231−1],就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
示例 2:
输入:x = -123
输出:-321
示例 3:
输入:x = 120
输出:21
示例 4:
输入:x = 0
输出:0
提示:
−231<=x<=231−1-2^{31} <= x <= 2^{31} - 1−231<=x<=231−1
思路
python里负数求余数和C++有很大区别,直接计算负数的余数会得到7,因此必须先判别正负,将负数转成正数再计算余数。另外C++ int型在取值范围外会直接溢出,而python能照旧输出正确反转的结果。
代码
import mathclass Solution:def reverse(self, x: int) -> int:figure=0flag=1if x==0 or x<pow(-2,31) or x>=pow(2,31):return 0while x!=0:if x<0:x=-xflag=-1b=x%10x=x//10figure=figure*10+bfigure=figure*flagif figure<pow(-2,31) or figure>=pow(2,31):return 0return figure
更简单的方法,可以直接用字符串反转
figure=int(str(x)[::-1])