LeetCode刷题07-简单 整数翻转

简介: LeetCode刷题07-简单 整数翻转


image.png

文章目录


前言

算法作为极其重要的一点,是大学生毕业找工作的核心竞争力,所以为了不落后与人,开始刷力扣算法题!

第一遍,不求最优解,但求能过!!!

📢:❤布小禅❤

📢 作者专栏:

❤Python❤

❤Java❤

这是我刷第 2/100 道力扣简单题


一、题目描述

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

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

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

难度:简单


二、题目解析

数字翻转,意思就是,给你一个152返回251,给-321,返回-123

  1. 我想到的是,先转为字符串
    然后判断第一个元素是否为-
    然后去掉负号,再倒序
    反转后转为整数,判断大小
  2. 根据数学方法来看,怎么将这个整数翻转
    首先我们需要知道,把一个整数拆开,需要些什么操作
    先除以是,然后取余数,余数就是整数的个位数,然后再把整数减去个位数,再除以十
    然后接着上面的操作,直到取余数为0
    大致流程:123,取10的余数,3,减去3为120,除以十为12
    取10的余数,2,减三除以十,1
    取10的余数,1,减1除以十,0
    取10的余数,0,结束循环
    找列表接收个位数的值,然后遍历列表,将其相加


三、代码

第一种方法的代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: Smly
# @datetime: 2021/7/24 18:06
# @Version: 1.0
class Solution:
    def reverse(self, x: int) -> int:
        """
        转为字符串翻转
        :param x: 被翻转的数
        :return: 翻转完成的数
        """
        if x < 0:
            x = -x
            s = str(x)[::-1]
            ends = -1 * int(s)
        elif x > 0:
            ends = int(str(x)[::-1])
        else:
            ends = 0
        if -2 ** 31 <= ends <= 2 ** 31 - 1:
            return ends
        else:
            return 0

第二种方法的的代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: Smly
# @datetime: 2021/7/24 18:09 
# @Version: 1.0
class Solution:
    def reverse(self, x: int) -> int:
        """
        取余从后一个一个拿数
        :param x: 被翻转的数
        :return: 翻转完成的数
        """
        i = 0
        if x < 0:
            x = -x
            xsum = 0
            n = len(str(x))
            while i < n:
                xsum += (x % 10) * 10 ** (n - 1)
                x = (x - (x % 10)) / 10
                n -= 1
            if -2 ** 31 <= xsum <= 2 ** 31 - 1:
                return int(xsum) * -1
            else:
                return 0
        elif x > 0:
            xsum = 0
            n = len(str(x))
            while i < n:
                xsum += (x % 10) * 10 ** (n - 1)
                x = (x - (x % 10)) / 10
                n -= 1
            if -2 ** 31 <= xsum <= 2 ** 31 - 1:
                return int(xsum)
            else:
                return 0
        else:
            return 0


结语

坚持最重要,每日一题必不可少!

image.png


目录
相关文章
|
3月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
2月前
|
存储
LeetCode整数反转
解决LeetCode上的整数反转问题的几种方法,包括错误的方法和优化后的解决方案,以及如何避免反转后的整数超出32位有符号整数范围的问题。
36 1
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
280页PDF,全方位评估OpenAI o1,Leetcode刷题准确率竟这么高
【10月更文挑战第24天】近年来,OpenAI的o1模型在大型语言模型(LLMs)中脱颖而出,展现出卓越的推理能力和知识整合能力。基于Transformer架构,o1模型采用了链式思维和强化学习等先进技术,显著提升了其在编程竞赛、医学影像报告生成、数学问题解决、自然语言推理和芯片设计等领域的表现。本文将全面评估o1模型的性能及其对AI研究和应用的潜在影响。
34 1
|
3月前
|
数据采集 负载均衡 安全
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
本文提供了多个多线程编程问题的解决方案,包括设计有限阻塞队列、多线程网页爬虫、红绿灯路口等,每个问题都给出了至少一种实现方法,涵盖了互斥锁、条件变量、信号量等线程同步机制的使用。
LeetCode刷题 多线程编程九则 | 1188. 设计有限阻塞队列 1242. 多线程网页爬虫 1279. 红绿灯路口
|
2月前
【LeetCode】整数翻转
【LeetCode】整数翻转
16 1
|
2月前
|
存储 C++
Leetcode第十二题(整数转罗马数字)
LeetCode第12题“整数转罗马数字”的解题方法,包括罗马数字的基本规则和特殊规则,以及如何使用C++实现整数到罗马数字的转换。
17 0
|
2月前
|
C++
Leetcode第十三题(罗马数字转整数)
这篇文章介绍了LeetCode第13题“罗马数字转整数”的解题方法,通过一个C++的类`Solution`中的`romanToInt`函数来实现,该函数使用哈希表和遍历字符串的方法,根据罗马数字的规则将输入的罗马数字字符串转换为对应的整数值。
52 0
|
2月前
|
算法 C++
Leetcode第八题(字符串转换整数(atoi))
这篇文章介绍了LeetCode上第8题“字符串转换整数(atoi)”的解题思路和C++的实现方法,包括处理前导空格、正负号、连续数字字符以及整数溢出的情况。
19 0
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
59 6
|
4月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
121 2