时间:2021-05-22
给你一个 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
思路1:将其转为字符串进行翻转,并进行正负的判断。最后,题目要求如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0
class Solution: def reverse(self, x: int) -> int: str1 = str(x) if str1[0] == '-': str1 = str1[0] + str1[:0:-1] else: str1 = str1[::-1] return int(str1) if -2147483648<int(str1)<2147483648 else 0思路2:不使用字符串。当翻转后的数字大于条件就返回0
class Solution: def reverse(self, x: int) -> int: y, res = abs(x), 0 # 则其数值范围为 [−2^31, 2^31 − 1] boundry = (1<<31) -1 if x>0 else 1<<31 while y != 0: res = res*10 +y%10 if res > boundry : return 0 y //=10 return res if x >0 else -res改进:
class Solution: def reverse(self, x: int) -> int: str1 = str(x) if str1[0] == '-': str1 = str1[0] + str1[:0:-1] a=int(str1) if (1<<31)<abs(a): return 0 else: str1 = str1[::-1] a= int(str1) if a>(1<<31) -1: return 0 return a答:这是leetcode上的一道编程算法题,感觉还是蛮经典的,今天就拿出来给大家分享一下!给出一个3位的正整数,你需要将这个整数中每位上的数字进行反转。例如:输入: 123,输出: 321 。大家先不看下面答案,看看如果是自己,可以想出几种Python方式来解决!
下面分别来说说几种实现的方式:
1、取余取整方式
class Test: def reverseInteger(self, number): g = number%10 #取出个位数 s = (int(number/10))%10 #取出十位数 b = int(number/100) #取出百位数 return g*100+s*10+bif __name__ == "__main__": ts = Test() print (ts.reverseInteger(123)) #输出结果:3212、使用栈的方式
class Test: def reverseInteger(self, number): number = str(number) # 模拟入栈 l = list(number) result = "" while len(l) > 0: result += l.pop() # 模拟出栈 return int(result)if __name__ == "__main__": ts = Test() print (ts.reverseInteger(123)) # 输出结果:3213、使用切片的方式
class Test: def reverseInteger(self, number): number=str(number) result=number[::-1] #python中切片的特殊用法 result=(int(result)) return resultif __name__ == "__main__": ts = Test() print (ts.reverseInteger(123))4、整数转字符串,反转字符串,然后再转整数
class Test: def reverseInteger(self, x): plus_minus = "" reverse_x = "" if x < 0: plus_minus = "-" x = -x for i in str(x): reverse_x = i + reverse_x reverse_x = plus_minus + reverse_x if int(reverse_x) > pow(2, 31) - 1 or int(reverse_x) < pow(-2, 31): return 0 return int(reverse_x) if __name__ == "__main__": ts = Test() print (ts.reverseInteger(123)) #输出结果:321到此这篇关于python3整数反转的实现方法的文章就介绍到这了,更多相关python3 整数反转内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
python3中,list有个reverse函数,用来反转列表元素,但是如果想要反转部分元素呢?a=[1,2,3,4,5]a[0:3].reverse()#no
本文实例讲述了Python实现链表反转的方法。分享给大家供大家参考,具体如下:Python实现链表反转链表反转(while迭代实现):链表的反转引入一个cur_
我简单的绘制了一下排序算法的分类,蓝色字体的排序算法是我们用python3实现的,也是比较常用的排序算法。Python3常用排序算法1、Python3冒泡排序—
本文实例讲述了Python实现字符串反转的常用方法。分享给大家供大家参考,具体如下:下面是实现python字符串反转的四种方法:1.切片defrev(s):re
最新的CentOS8已经内置了Python2和Python3,出入Python2和Python3两个命令可以分别进入Python2和Python3。CentOS