python 整数反转 详解
2021/7/14 17:05:52
本文主要是介绍python 整数反转 详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
""" 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [ - 2 ^ 31 , 2 ^ 31 - 1 ] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 示例 1: 输入:x = 123 输出:321 示例 2: 输入:x = -123 输出:-321 示例 3: 输入:x = 120 输出:21 示例 4: 输入:x = 0 输出:0 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-integer 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 """ def reverse(self, x: int) -> int: # res 为取绝对值 y, res = abs(x), 0 # 其数值范围为 [−2^31, 2^31 − 1] # 利用左移右移来表示 2 的 x 次方 # 例如 a << x 表示 a * 2 ^ x # 因为y取的是绝对值 固取值范围也只考虑整数的情况 # 下面是一个if else 的简写法,展开如下 # if x > 0: # boundry = (1 << 31) - 1 -->负数情况 # else: # boundry = 1 << 31 -->正数情况 boundry = (1 << 31) - 1 if x > 0 else 1 << 31 # 用循环的方式来确定是否还有值,只要有值就继续取数字 while y != 0: # res 的初始值为 0 , 其实不难发现,每次都取余 y 的 10 # 也就是取输入数字的最后一位 # 每次计算时 res * 10 其实也是为了增加一位从而实现倒叙插入数字的方式 res = res * 10 + y % 10 # 这个 if 语句在这里可以节省一个对 0 的判断 # 但是如果非0 每次到结束之前每次都要判断 # 因此这里笔者并没有选择在这里使用该判断语句 #if res > boundry: #return 0 # 每次计算完后,都要去掉y的最后一位,这样保证每次取余的最后一位都是未加入 res 的 y //= 10 # 循环完后加入判断,如果超出取值范围,则根据要求直接返回 0 if res > boundry: return 0 if res == 0: return 0 # 如果要求末尾是 0 反转后也要保留的话,可以加入此判断语句 #if x % 10 == 0: # res = "0" + str(res) # 因为输入的是 int 类型 所以句首的 0 会被自动去掉 # #如果输入字符型 可以加入以下 while 语句来去掉句首的 0 #i = 0 #while str(x)[i] == "0": #res = str(res) + "0" #i += i return res if x > 0 else -res print(reverse(0, int(input()))) # 程序参考: # 链接:https: // leetcode - cn.com / problems / reverse - integer / solution / pythondan - chu - he - tui - ru - shu - # 作者:stray_camel
这篇关于python 整数反转 详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型
- 2024-12-23使用python部署一个usdt合约,部署自己的usdt稳定币
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享
- 2024-12-19使用python 把docx转为pdf文件有哪些方法?-icode9专业技术文章分享
- 2024-12-19python怎么更换换pip的源镜像?-icode9专业技术文章分享