前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【力扣算法10】之 7. 整数反转 python

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

作者头像
全栈若城
发布2024-02-29 19:14:38
1690
发布2024-02-29 19:14:38
举报
文章被收录于专栏:若城技术专栏

问题描述

给你一个 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作为结果。

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

完整代码

代码语言:javascript
复制
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。
代码语言:javascript
复制
if x < 0:
    sign = -1
    x = abs(x)
else:
    sign = 1

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

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

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

  1. 将翻转后的字符串 num_str 转换为整数,并乘以之前保存的符号 sign
代码语言:javascript
复制
reversed_num = int(num_str) * sign

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

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

return reversed_num

运行效果截图

调用示例

代码语言:javascript
复制
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))

运行结果

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题描述
    • 示例1
      • 示例2
        • 示例3
          • 示例4
            • 提示
            • 思路分析
            • 代码分析
            • 完整代码
            • 详细分析
            • 运行效果截图
              • 调用示例
                • 运行结果
                相关产品与服务
                对象存储
                对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档