【力扣算法10】之 7. 整数反转 python

news2024/12/24 2:26:21

文章目录

  • 问题描述
    • 示例1
    • 示例2
    • 示例3
    • 示例4
    • 提示
  • 思路分析
  • 代码分析
  • 完整代码
  • 详细分析
  • 运行效果截图
    • 调用示例
    • 运行结果
  • 完结

问题描述

在这里插入图片描述

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

提示

  • -231 <= x <= 231 - 1

思路分析

在这里插入图片描述

  1. 将整数转换为字符串,并判断是否为负数。
  2. 如果是负数,则将负号保存下来,并对数字部分取绝对值。
  3. 将字符串反转。
  4. 将反转后的字符串转换为整数,并乘以负号(如果有)。
  5. 判断反转后的整数是否超出范围,如果超出则返回 0,否则返回反转后的整数。

代码分析

在这里插入图片描述
代码定义了一个名为Solution的类,其中包含了一个reverse方法。下面对代码进行详细的分析说明:

  1. 第1行定义了Solution类,继承自object

  2. reverse方法是Solution类的一个成员方法,接受一个整数作为输入参数x,并返回一个整数作为结果。

  3. 通过if语句判断输入整数x是否小于0,确定其正负性,并保存符号。

  4. 如果x小于0,则将符号设置为-1,并取x的绝对值(使用abs()函数);否则,将符号设置为1。

  5. 将整数x转换为字符串形式,使用str()函数将整数转换为字符串。

  6. 对字符串num_str进行切片操作[::-1],实现字符串翻转。这里通过反向迭代取字符串的每一个字符,从而达到翻转的效果。

  7. 将翻转后的字符串num_str转换回整数形式,并乘以之前保存的符号,得到反转后的整数reversed_num

  8. 使用条件判断语句,判断反转后的整数reversed_num是否超出范围。如果超出范围,则返回0;否则,返回反转后的整数reversed_num作为结果。

代码的核心思想是将整数转换为字符串,然后对字符串进行翻转操作,最后再将翻转后的字符串转换回整数。通过判断符号和处理边界条件,确保返回结果在规定范围内。

完整代码

请添加图片描述

class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        # 判断输入整数为负数,并保存符号
        if x < 0:
            sign = -1
            x = abs(x)  # 取 x 的绝对值
        else:
            sign = 1
        
        # 将整数转换为字符串,并去除符号部分(如果有)
        num_str = str(x)  # 将整数转换为字符串
        num_str = num_str[::-1]  # 翻转字符串
        
        # 将字符串转换为整数,并加上之前保存的符号
        reversed_num = int(num_str) * sign
        
        # 判断结果是否超出范围
        if reversed_num < -2**31 or reversed_num > 2**31 - 1:
            return 0
        
        return reversed_num

详细分析

首先,在 reverse 方法中,我们需要注意处理负数的情况。具体步骤如下:

  1. 判断输入整数 x 的值来确定其正负性,并保存符号。
    • 如果 x 小于 0,则说明是一个负数,需要将符号设置为 -1,并取 x 的绝对值;否则,符号设置为 1。
if x < 0:
    sign = -1
    x = abs(x)
else:
    sign = 1

接下来,我们将整数 x 转换为字符串,并通过字符串切片操作 [:: -1] 对字符串进行翻转。这一步是实现整数反转的核心步骤。

  1. 将整数 x 转换为字符串,并通过字符串切片操作 [:: -1] 对字符串进行翻转。
num_str = str(x)
num_str = num_str[::-1]  # 翻转字符串

然后,我们将翻转后的字符串 num_str 转换为整数,并乘以之前保存的符号 sign,得到反转后的整数 reversed_num

  1. 将翻转后的字符串 num_str 转换为整数,并乘以之前保存的符号 sign
reversed_num = int(num_str) * sign

最后,我们需要判断反转后的整数 reversed_num 是否超出范围。题目要求结果在 32 位有符号整数的表示范围内,即 -2^312^31 - 1

  1. 判断反转后的整数 reversed_num 是否超出范围,如果超出范围则返回 0,否则返回反转后的整数 reversed_num
if reversed_num < -2 ** 31 or reversed_num > 2 ** 31 - 1:
    return 0

return reversed_num

运行效果截图

调用示例

solution = Solution()
x = 123
x1 = -123
x3 = 120
x4 = 0
print(solution.reverse(x))
print(solution.reverse(x1))
print(solution.reverse(x3))
print(solution.reverse(x4))

运行结果

在这里插入图片描述

完结

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/748952.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(Onenet)STM32L+BC20+MQTT协议传输温湿度,ADC,电压,GPS数据到Onenet物联网平台

1、材料准备 准备以下材料 2、设备连接 2.1 插入物联网卡 首先把BC20核心板从开发板上拆下来 然后将物联卡放置在BC20核心板内 物联卡放置完成将BC20核心板重新插入到开发板内&#xff08;注意不要弄错方向&#xff09; 同时接入天线 2.2 连接ST-Link仿真器 用3条杜邦线接…

python接口自动化(三十四)-封装与调用--函数和参数化(详解)

简介 前面虽然实现了参数的关联&#xff0c;但是那种只是记流水账的完成功能&#xff0c;不便于维护&#xff0c;也没什么可读性&#xff0c;随着水平和技能的提升&#xff0c;再返回头去看前边写的代码&#xff0c;简直是惨不忍睹那样的代码是初级入门的代码水平都达不到。接下…

股票开户手续费最低的券商有哪些?揭秘券商成本佣金,交易费率原来可以这么低!

哪个券商手续费最低实际上是没有这种说法的&#xff0c;想要低手续费一定要联系线上客户经理办理开户&#xff0c;是可以和线上客户经理协商降低手续费的&#xff0c;一定要通过线上客户经理特殊渠道开户&#xff0c;才能享受低手续费账户&#xff0c;还可以办理到vip账户&…

Python中可以用三种方法判断文件是否存在

目录 前言1.使用os模块2.使用Try语句3. 使用pathlib模块尾语 &#x1f49d; 前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 通常在读写文件之前&#xff0c;需要判断文件或目录是否存在&#xff0c;不然某些处理方法可能会使程序出错。 所以最好在做任何操作之前&#xff…

spring复习:(22)实现了BeanNameAware等Aware接口的bean,相应的回调方法是在哪里被调用的?

AbstractAutowireCapableBeanFactory的doCreateBean用来创建bean, 其中调用了initializeBean方法对bean进行初始化 initializeBean包含如下代码&#xff1a; 而invokeAwareMethods代码如下&#xff1a; 可见其分别判断是否实现了BeanNameAware接口、BeanClassLoaderAware接口…

【Linux指令sudo与Linux编译器-gcc/g++】

目录 一、sudo1.1为什么我用不了sudo命令1.2如何将普通用户添加到信任列表里面 二、Linux编译器-gcc/g使用2.1背景知识2.2gcc如何完成上面的4个功能&#xff1f;2.3函数库 一、sudo sudo是linux系统管理指令&#xff0c;是允许系统管理员让普通用户执行一些或者全部的root命令…

金融行业数据安全相关法律法规及政策汇总

如今随着大数据和“互联网”等新兴技术的拓展&#xff0c;数据的作用也在不断凸显&#xff0c;金融业是产生和积累数据量最大、数据类型最丰富的行业之一&#xff0c;数据安全与个人信息保护在新时代也面临新的风险与挑战。 根据《中国银行保险报》与亚信网络安全产业技术研究院…

CCPC 2022济南站+2020威海站+2019秦皇岛站+2022绵阳站(部分)(暑假集训)

目录 Tower Frozen Scoreboard Identical Parity​编辑 Best Carry Player Stack Sort Invoker MUV LUV EXTRA Forest Program Angle Beats Catch You Catch Me Tower 思路&#xff1a; 提前进行/2的预处理操作&#xff0c;操作之后 &#xff0c;在记录下要达到一样的步骤…

JavaFX 基础

1.JavaFX应用的程序基本结构 窗口(stage)&#xff1a;窗口里面可以设置场景&#xff0c;但是一次只能显示一个场景。 场景(scene)&#xff1a;场景可以添加UI组件图的树形结构。 根节点(parent)&#xff1a;根节点设置为一个布局&#xff0c;放置不同的节点(组件)。可以在根节…

备战秋招 | 笔试强训2

目录 一、选择题 二、编程题 三、选择题题解 四、编程题题解 一、选择题 1、使用printf函数打印一个double类型的数据&#xff0c;要求&#xff1a;输出为10进制&#xff0c;输出左对齐30个字符&#xff0c;4位精度。以下哪个选项是正确的&#xff1f; A. %-30.4e B. %4.…

白皮书案例解读|数字孪生与港口的结合会碰撞出什么样的火花呢?

以下案例来自于《数字孪生世界白皮书&#xff08;2023版&#xff09;》 领取方式&#xff1a;公众号「EasyV数字孪生」后台回复「白皮书」即可领取&#xff01; 嗨&#xff0c;我又出现啦&#xff5e;今天想和大家聊聊关于港口场景数字孪生技术的应用&#xff0c;欢迎大家踊跃…

Linux登录时,下游回显非常慢

目录 问题现象 原因分析 解决方法 源码等资料获取方法 问题现象 登录linux时&#xff0c;远程连接正常&#xff0c;[root...]回显非常慢&#xff0c;在执行脚本时&#xff0c;很容易导致命令下发错乱 原因分析 家目录下的.bash_history文件太大&#xff0c;导致每次登陆时读…

magento2 二次开发如何自定义theme

1.在app\design\frontend下创建自定义Theme文件夹&#xff0c;格式为Vendor/ThemeName&#xff0c;比如TestCompany/test 2.在TestCompany/test目录下创建文件夹和文件如下&#xff1a; etc 非必须创建 在此目录下添加view.xml&#xff0c;内容如下&#xff1a; view.xml可定…

Occupy the Cities - 思维+二分

分析&#xff1a; 分析每一个0的位置&#xff0c;记录每一个0距离两侧的1的最近距离&#xff0c;每一个1要么向左扩展要么向右扩展&#xff0c;可以将扩展过的1标记&#xff0c;如果需要向另一侧扩展&#xff0c;那么必须满足距离另一侧的0的距离加1小于等于时间&#xff0c;比…

网络安全行业的那些岗位

网络安全行业&#xff0c;正在蓬勃发展&#xff0c;想要找网络安全岗位的&#xff0c;可以参考这篇文章 一、网络安全岗位 1、需要网络安全人员的企业 有三种企业招聘网络安全人员&#xff1a;乙方企业、甲方企业、国有企业 乙方企业是专门从事网络安全行业的企业&#xff0c…

用Arthas快速定位线上JVM问题!

Arthas分析FullGC问题定位 对于FullGC那一定不会陌生,一般来说会采用横切FullGC前置拦截(-XX:+HeapDumpBeforeFullGC)和后置拦截(-XX:+HeapDumpAfterFullGC),导出FullGC发生前后的heap dump文件,以便于我们进行FullGC原因的分析和定位。 推测分析问题之FullGC的频率过高…

SpringBoot2+Vue2实战(十八)修改密码

一、修改密码&#xff1a; Header.vue <el-dropdown-item style"font-size: 14px; padding: 5px 0"><router-link to"/password" style"text-decoration: none">修改密码</router-link></el-dropdown-item> router/i…

tensorrt8.5.2安装,并解决CMAKE找不到tensorrt问题

ubuntu20.04、cuda11.1、cudnn8.0.5&#xff08;后续要更新到8.6.0&#xff09; tensorrt下载网址&#xff1a;NVIDIA TensorRT 8.x Download | NVIDIA Developer 选择自己合适的cuda安装 下载的时候可以使用wget wget https://developer.download.nvidia.com/compute/machin…

【springboot】RestTemplate序列化RedisSerializer到底该选哪个

RedisTemplate是Spring Data Redis提供给用户的最高级的抽象客户端&#xff0c;用户可直接通过RedisTemplate对Redis进行多种操作。 在项目中使用需要引入如下依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>…

ScrollRect滚动区域Content列表项数据钳制取值问题

问题 如下图示例&#xff0c;是一个选择日期、时间的日历控件&#xff0c;右侧小时与分钟的部分是两个Scroll Rect滚动区域组件&#xff0c;滚动到中间高亮部分表示选择&#xff0c;那么如何让滚动停止在合适的位置&#xff1f;避免出现如图所示的停在两个数据项中间的情况。 …