您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:python3整数反转的实现方法

51自学网 2021-10-30 22:46:50
  python
这篇教程python3整数反转的实现方法写得很实用,希望能帮到您。

给你一个 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 

补充:问:说说Python反转三位整数有几种方法?

答:这是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)) #输出结果:321

2、使用栈的方式

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)) # 输出结果:321

3、使用切片的方式

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 整数反转内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net!


详解如何利用tushare、pycharm和excel三者结合进行股票分析
python3翻转字符串里的单词点的实现方法
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。