题目描述
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
思路解析
用 res 变量记录反转的整数数字,对当前数字取对 10 的余数,再将余数与 res 变量加和,即可完成 数字 翻转;
int 取值范围为 [-2^(31), 2^(31) - 1],如果翻转数字溢出,则立即返回 0。
具体代码
def reverse(x):
# 将数字取绝对值,使得对正数进行操作,最后再加负号
y = abs(x)
# res变量用来记录反转后的数字
res = 0
# 整数溢出的边界
boundry = (1 << 31) - 1 if x > 0 else 1 << 31
while y != 0:
# 对正数y进行取余,在与res进行求和
res = res * 10 + y % 10
# 若反转后的数字超出边界,则直接返回 0
if res > boundry:
return 0
# 对y一步步进行取整
y //= 10
return res if x > 0 else -res
def main():
# python3取消了long()表示长整形数字
x = int(input())
rs = reverse(x)
print(rs)
main()