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

简介: 【力扣算法10】之 7. 整数反转 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

提示

  • -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
• 1

最后,我们需要判断反转后的整数 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))

运行结果


完结


相关文章
|
10天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
41 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
10天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
36 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
10天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
50 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
15天前
|
存储 算法 Java
leetcode算法题-有效的括号(简单)
【11月更文挑战第5天】本文介绍了 LeetCode 上“有效的括号”这道题的解法。题目要求判断一个只包含括号字符的字符串是否有效。有效字符串需满足左括号必须用相同类型的右括号闭合,并且左括号必须以正确的顺序闭合。解题思路是使用栈数据结构,遍历字符串时将左括号压入栈中,遇到右括号时检查栈顶元素是否匹配。最后根据栈是否为空来判断字符串中的括号是否有效。示例代码包括 Python 和 Java 版本。
|
15天前
|
算法 Python
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果;贪心算法在每一步选择局部最优解,追求全局最优;动态规划通过保存子问题的解,避免重复计算,确保全局最优。这三种算法各具特色,适用于不同类型的问题,合理选择能显著提升编程效率。
32 2
|
24天前
|
算法 测试技术 开发者
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗
在Python开发中,性能优化和代码审查至关重要。性能优化通过改进代码结构和算法提高程序运行速度,减少资源消耗;代码审查通过检查源代码发现潜在问题,提高代码质量和团队协作效率。本文介绍了一些实用的技巧和工具,帮助开发者提升开发效率。
26 3
|
27天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
72 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
1月前
|
机器学习/深度学习 算法 Java
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
3月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
115 2
下一篇
无影云桌面