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+b
if __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 result
if __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 整数反转内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python 反转输出正整数的操作

    题目: 获得输入正整数 N,反转输出该正整数,不考虑异常情况. ‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬ 输入格式:输入一个正整数 ‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬ 输出格式‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪

  • Python 列表反转显示的四种方法

    第一种,使用reversed 函数,reversed返回的结果是一个反转的迭代器,我们需要对其进行 list 转换 listNode = [1,2,3,4,5] newList = list(reversed(listNode)) print(newList) #结果 [5,4,3,2,1] 第二种,使用sorted函数,sorted是排序函数,它是对一个列表进行排序后生成一个新的list列表,而sort则是在原来的列表上直接进行排序. listNode = [1,2,3,4,5] newLis

  • 如何用python反转图片,视频

    利用python反转图片/视频 准备:一张图片/一段视频 python库:Pillow,moviepy 安装库 pip install Pillow -i https://mirrors.aliyun.com/pypi/simple pip install moviepy -i https://mirrors.aliyun.com/pypi/simple 默认官方镜像源,我这里尝试的时候没有任何进度.切换到国内的源,比如阿里镜像,清华镜像即可.第一次使用国内源,简直是神速! 反转效果 反转后 实

  • Python实现链表反转的方法分析【迭代法与递归法】

    本文实例讲述了Python实现链表反转的方法.分享给大家供大家参考,具体如下: Python实现链表反转 链表反转(while迭代实现): 链表的反转引入一个cur_node变量,表示当前节点:同时需要引入一个变量new_link表示反转后的新链表:while循环内还需中间变量tmp存放当前节点的后继节点,防止原链表数据丢失. 在while循环内(循环条件为 cur_node !=None,若设置为cur_node.next将导致最后一个节点无法反转到新链表): 首先需要将当前节点的后继节点传递

  • Python 实现反转整数的案例(很容易懂的那种)

    题目: 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 .请根据这个假设,如果反转后整数溢出那么就返回 0. 解题思路: 1.实现数据的反转 如果是正数: tra = 0 while x != 0: n2 = x%10 x = x //10 tra = tra*10

  • python反转一个三位整数的多种实现方案

    在LintCode上练习遇到这个问题,查阅资料找到多种方法,总结如下. 输入 输出 123 321 第一种:整数方法取余取整实现 class Solution: """ @param number: A 3-digit number. @return: Reversed number. """ def reverseInteger(self, number): g = number%10 #取出个位数 s = (int(number/10))%1

  • 在Python中实现字典反转案例

    有时候会碰到需求,将字典来反转,即:字典中的键作为值,而字典中的值作为键.对于字典比较小,可以使用普通方法 方法一: 使用普通方法转换 >>> d = {'a': 1, 'b': 2, 'c': 3} >>> def invert_dict(d): ... return dict([(v,k) for (k,v) in d.iteritems()]) ... >>> invert_dict(d) {1: 'a', 2: 'b', 3: 'c'} 方法二

  • python反转(逆序)字符串的6种方法详细

    对于一个给定的字符串,逆序输出,这个任务对于python来说是一种很简单的操作,毕竟强大的列表和字符串处理的一些列函数足以应付这些问题 了,今天总结了一下python中对于字符串的逆序输出的几种常用的方法 方法一:直接使用字符串切片功能逆转字符串 >>> def strReverse(strDemo): return strDemo[::-1] >>> print(strReverse('jb51.net')) ten.15bj 结果: ten.15bj 方法二:遍历构

  • python如何实现单向链表及单向链表的反转

    链表的定义 链表中的每个节点会存储相邻节点的位置信息,单链表中的每个节点只存储下一关节点的位置信息 单向链表的实现 class ListNode: def __init__(self, val): self.val = val self.next = None 要实现单向链表只需要把几个节点关联起来就可以了,把一个节点的next设置为另一个节点就可以了,例如创建一个A->B->C 的单向链表可以这么写: first_node = ListNode("A") second_n

  • Python reversed反转序列并生成可迭代对象

    英文文档: reversed(seq) Return a reverse iterator. seq must be an object which has a __reversed__() method or supports the sequence protocol (the __len__() method and the __getitem__() method with integer arguments starting at 0). 反转序列生成新的可迭代对象 说明: 1. 函数

随机推荐