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


目录
相关文章
|
5天前
|
索引
【力扣刷题】两数求和、移动零、相交链表、反转链表
【力扣刷题】两数求和、移动零、相交链表、反转链表
13 2
【力扣刷题】两数求和、移动零、相交链表、反转链表
|
4天前
|
算法
"刷题记录:哈希表+双指针 | leetcode-2465. 不同的平均值数目 "
该文段是一篇关于编程题目的解答,主要讨论如何找到数组中所有不同平均值的个数。作者首先使用排序和哈希集来解决,将数组转为列表排序后,通过双指针计算平均值并存入哈希集以去重。然后,作者发现可以优化方案,通过双指针在排序后的数组中直接计算两数之和,用哈希集记录不重复的和,从而避免实际计算平均值,提高了算法效率。最终代码展示了这两种方法。
12 0
|
5天前
|
索引
【力扣刷题】删除链表的倒数第 N 个结点、两两交换链表中的节点、随机链表的复制
【力扣刷题】删除链表的倒数第 N 个结点、两两交换链表中的节点、随机链表的复制
10 0
|
5天前
|
存储 算法 索引
【力扣刷题】只出现一次的数字、多数元素、环形链表 II、两数相加
【力扣刷题】只出现一次的数字、多数元素、环形链表 II、两数相加
15 1
|
5天前
【力扣刷题】二叉树的中序遍历、二叉树的最大深度、翻转二叉树、对称二叉树
【力扣刷题】二叉树的中序遍历、二叉树的最大深度、翻转二叉树、对称二叉树
11 0
|
5天前
|
索引
【力扣刷题】数组实现栈、后缀表达式(逆波兰表达式)求值、中缀表达式转换为后缀表达式(无括号&&有括号)
【力扣刷题】数组实现栈、后缀表达式(逆波兰表达式)求值、中缀表达式转换为后缀表达式(无括号&&有括号)
10 0
|
5天前
|
索引
【力扣刷题】回文链表、环形链表、合并两个有序链表
【力扣刷题】回文链表、环形链表、合并两个有序链表
11 0
|
7天前
|
算法 索引
力扣刷题【第一期】
这是一个关于算法的总结,包含7个不同的问题。1)爬楼梯问题,使用动态规划,通过迭代找到到达n阶楼梯的不同方法数。2)两数之和,通过双重循环找出数组中和为目标值的两个数的索引。3)移动零,使用双指针将数组中的0移到末尾。4)合并有序链表,创建新链表按升序合并两个链表。5)删除链表重复值,遍历链表删除重复元素。6)环形链表检测,使用快慢指针判断链表是否有环。7)相交链表,计算链表长度找
13 1
|
8天前
|
存储 Java
JAVA数据结构刷题 -- 力扣二叉树
JAVA数据结构刷题 -- 力扣二叉树
14 0
|
17天前
|
算法 C++
【刷题】Leetcode 1609.奇偶树
这道题是我目前做过最难的题,虽然没有一遍做出来,但是参考大佬的代码,慢慢啃的感觉的真的很好。刷题继续!!!!!!
14 0