python简单实现整数反转的画解算法

题目描述

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

示例 1:

输入:x = 123

输出:321

示例 2:

输入:x = -123

输出:-321

示例 3:

输入:x = 120

输出:21

示例 4:

输入:x = 0
输出:0

问题分析

首先我们想一下,怎么去反转一个整数?

用栈?

或者把整数变成字符串,再去反转这个字符串?

这两种方式是可以,但并不好。

  • 实际上我们只要能拿到这个整数的 末尾数字 就可以了。
  • 以12345为例,先拿到5,再拿到4,之后是3,2,1,我们按这样的顺序就可以反向拼接处一个数字了
  • 也就能达到 反转 的效果。

怎么拿末尾数字呢?

好办,用取模运算就可以了

  • 将12345 % 10 得到5,之后将12345 / 10
  • 将1234 % 10 得到4,再将1234 / 10
  • 将123 % 10 得到3,再将123 / 10
  • 将12 % 10 得到2,再将12 / 10
  • 将1 % 10 得到1,再将1 / 10

这么看起来,一个循环就搞定了,循环的判断条件是x>0

但这样不对,

  • 因为忽略了 负数
  • 循环的判断条件应该是while(x!=0),无论正数还是负数,
  • 按照上面不断的/10这样的操作,最后都会变成0,所以判断终止条件就是!=0
  • 有了取模和除法操作,对于像12300这样的数字,也可以完美的解决掉了。

看起来这道题就这么解决了,但请注意,题目上还有这么一句

假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。

也就是说我们不能用long存储最终结果,而且有些数字可能是合法范围内的数字,但是反转过来就超过范围了。

假设有1147483649这个数字,它是小于最大的32位整数2147483647的,

但是将这个数字反转过来后就变成了9463847411,

这就比最大的32位整数还要大了,这样的数字是没法存到int里面的,所以肯定要返回0(溢出了)。

甚至,我们还需要提前判断

上图中,绿色的是最大32位整数

第二排数字中,橘子的是5,它是大于上面同位置的4,这就意味着5后跟任何数字,都会比最大32为整数都大。

所以,我们到【最大数的1/10】时,就要开始判断了

  • 如果某个数字大于 214748364那后面就不用再判断了,肯定溢出了。
  • 如果某个数字等于 214748364呢,这对应到上图中第三、第四、第五排的数字,
  • 需要要跟最大数的末尾数字比较,如果这个数字比7还大,说明溢出了。

对于负数也是一样的

上图中绿色部分是最小的32位整数,同样是在【最小数的 1/10】时开始判断

  • 如果某个数字小于 -214748364说明溢出了
  • 如果某个数字等于 -214748364,还需要跟最小数的末尾比较,即看它是否小于8。

以上就是python简单实现整数反转的画解算法的详细内容,更多关于python整数反转的画解算法的资料请关注我们其它相关文章!

(0)

相关推荐

  • python反转列表的三种方式解析

    这篇文章主要介绍了python反转列表的三种方式解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.内建函数reversed() li =[1, 2, 3, 4, 5, 6] a = list(reversed(li)) print (a) 注意:reversed()函数返回的是一个迭代器,而不是一个List,所以需要list函数转换一下 2.内建函数sorted() sorted()语法 sorted(iterable[, cmp[, k

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

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

  • 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:将其转为字符串进行翻转,并进行正负的判断.最后,题目要求如果反转后整数超过

  • 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对数组进行反转的方法

    本文实例讲述了python对数组进行反转的方法.分享给大家供大家参考.具体实现方法如下: arr = [1,2,3] arr.reverse() print(arr) 输出: [3,2,1] 希望本文所述对大家的Python程序设计有所帮助.

  • python算法题 链表反转

    链表的反转是一个很常见.很基础的数据结构题,输入一个单向链表,输出逆序反转后的链表,如图:上面的链表转换成下面的链表.实现链表反转有两种方式,一种是循环迭代,另外一种方式是递归. 第一种方式:循坏迭代 循坏迭代算法需要三个临时变量:pre.head.next,临界条件是链表为None或者链表就只有一个节点. # encoding: utf-8 class Node(object): def __init__(self): self.value = None self.next = None de

  • python简单实现整数反转的画解算法

    题目描述 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果. 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0. 假设环境不允许存储 64 位整数(有符号或无符号). 示例 1: 输入:x = 123 输出:321 示例 2: 输入:x = -123 输出:-321 示例 3: 输入:x = 120 输出:21 示例 4: 输入:x = 0 输出:0 问题分析 首先我们想一下,怎么去反转一个整数? 用栈? 或者把整数变成字符串

  • 使用python实现两数之和的画解算法

    题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组中同一个元素在答案里不能重复出现. 你可以按任意顺序返回答案. 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] . 示例 2: 输入:nums = [3,2,4],

  • Python简单实现图片转字符画的实例项目

    1. 原理 利用 PIL 库来获取图片并修改大小, 利用灰度值转换公式把每一个像素的 RGB 值转为灰度值 gray = int(0.2126*r+0.7152*g+0.0722*b) 再从字符集里获取对应的字符 asciis = list('M%$@#&WNBRwm8S5A4E3KXFPH69nsxeazgpqbdoctfhkyvuGZYVTUCI2QOD0L7Jjl1ri!^{}[]()/|;:*<>_~-,. ') 最后将字符连接起来并保存就完成了 2. 开始制作 2.1 导入所

  • Python简单的GUI程序示例详解

    目录 一.记事本 二.简单画图 总结 一.记事本 源码 #python简易记事本 from tkinter import * from tkinter import messagebox from tkinter import filedialog import os filename='' #文件名,全局变量 def about(): messagebox.showinfo('提示','这是一个消息框') def openFile(): global filename #使用全局变量 file

  • python 简单的绘图工具turtle使用详解

    目录 1. 画布(canvas)   1.1 设置画布大小 2. 画笔   2.1 画笔的状态   2.2 画笔的属性   2.3 绘图命令 3. 命令详解 4. 绘图举例   4.1 太阳花   4.2 绘制小蟒蛇   4.3 绘制五角星 python2.6版本中后引入的一个简单的绘图工具,叫做海龟绘图(Turtle Graphics),turtle库是python的内部库,使用导入即可 import turtle type(turtle) >>> type(turtle) <c

  • 详解Golang 与python中的字符串反转

    详解Golang 与python中的字符串反转 在go中,需要用rune来处理,因为涉及到中文或者一些字符ASCII编码大于255的. func main() { fmt.Println(reverse("Golang python")) } func reverse(src string) string { dst := []rune(src) len := len(dst) var result []rune result = make([]rune, 0) for i := le

  • Python实现读取txt文件并画三维图简单代码示例

    记忆力差的孩子得勤做笔记! 刚接触python,最近又需要画一个三维图,然后就找了一大堆资料,看的人头昏脑胀的,今天终于解决了!好了,废话不多说,直接上代码! #由三个一维坐标画三维散点 #coding:utf-8 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d.axes3d import Axes3D x = [] y = [] z = [] f = open("data\\record.

  • 对Python 简单串口收发GUI界面的实例详解

    忙活了三个多小时,连学带做,总算是搞出来了一个具有基本功能的串口通信PC机的GUI界面,Tkinter在python中确实很好用,而且代码量确实也很少,不足的是Tkinter不自带combox,但是幸运的是我下载的2.7版本自带了包含有combox的ttk模块,于是乎问题就顺利解决了. 下面是源代码,一些错误提示功能还没有做,目前只是简单地实现了下位机与PC的通信界面,下位机还是用的STM32F103 #encoding=utf-8 __author__ = 'freedom' from Tki

  • 详解Selenium+PhantomJS+python简单实现爬虫的功能

    Selenium 一.简介 selenium是一个用于Web应用自动化程序测试的工具,测试直接运行在浏览器中,就像真正的用户在操作一样 selenium2支持通过驱动真实浏览器(FirfoxDriver,IternetExplorerDriver,OperaDriver,ChromeDriver) selenium2支持通过驱动无界面浏览器(HtmlUnit,PhantomJs) 二.安装 Windows 第一种方法是:下载源码安装,下载地址(https://pypi.python.org/py

  • python简单实现最大似然估计&scipy库的使用详解

    python简单实现最大似然估计 1.scipy库的安装 wim+R输入cmd,然后cd到python的pip路径,即安装:pip install scipy即可 2.导入scipy库 from scipy.sats import norm 导入scipy.sats中的norm 3.案例分析 from scipy.stats import norm import matplotlib.pyplot as plt import numpy as np ''' norm.cdf 返回对应的累计分布函

随机推荐