python整数反转(Reverse Integer)
2021/11/21 12:10:22
本文主要是介绍python整数反转(Reverse Integer),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目:
"""给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围[−2^31,2^31−1],就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
"""
法一:末尾*10
# 弹出 x 的末尾数字 digit digit = x % 10 x /= 10 # 将数字 digit 推入 rev 末尾 rev = rev * 10 + digit
class Solution: def reverse(self, x: int) -> int: INT_MIN, INT_MAX = -2 ** 31, 2 ** 31 - 1 rev = 0 while x != 0: # INT_MIN 也是一个负数,不能写成 rev < INT_MIN // 10 if rev < INT_MIN // 10 + 1 or rev > INT_MAX // 10: return 0 digit = x % 10 # Python3 的取模运算在 x 为负数时也会返回 [0, 9) 以内的结果,因此这里需要进行特殊判断 if x < 0 and digit > 0: digit -= 10 # 同理,Python3 的整数除法在 x 为负数时会向下(更小的负数)取整,因此不能写成 x //= 10 x = (x - digit) // 10 rev = rev * 10 + digit return rev x = -1234 S = Solution() result = S.reverse(x) print(result)
法二:末尾*10^(n-1)
class Solution: def reverse(self, x: int) -> int: if x >= 0: result = self.rreverse(x) elif x < 0: result = self.reverse(abs(x)) * (-1) if result >= -1*2**31 and result <= 2**31-1: return result else: return 0 def rreverse(self,x): result = 0 nums = len(str(x)) if nums ==1: return x else: for n in range(nums,0,-1): i = x % 10 result += i * (10 ** (n - 1)) # x = (x - i)//10 x //= 10 #同上 return result x = -1234 S = Solution() result = S.reverse(x) print(result)
这篇关于python整数反转(Reverse Integer)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-03用FastAPI掌握Python异步IO:轻松实现高并发网络请求处理
- 2025-01-02封装学习:Python面向对象编程基础教程
- 2024-12-28Python编程基础教程
- 2024-12-27Python编程入门指南
- 2024-12-27Python编程基础
- 2024-12-27Python编程基础教程
- 2024-12-27Python编程基础指南
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型