LeetCode刷题07-简单 整数翻转 python语言

Posted 布小禅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode刷题07-简单 整数翻转 python语言相关的知识,希望对你有一定的参考价值。

前言

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

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

1. 题目描述

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

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

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

难度:简单

2. 题目解析

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

  1. 我想到的是,先转为字符串

    然后判断第一个元素是否为-

    然后去掉负号,再倒序

    反转后转为整数,判断大小

  2. 根据数学方法来看,怎么将这个整数翻转

    首先我们需要知道,把一个整数拆开,需要些什么操作

    先除以是,然后取余数,余数就是整数的个位数,然后再把整数减去个位数,再除以十

    然后接着上面的操作,直到取余数为0

    大致流程:123,取10的余数,3,减去3为120,除以十为12

    取10的余数,2,减三除以十,1

    取10的余数,1,减1除以十,0

    取10的余数,0,结束循环

    找列表接收个位数的值,然后遍历列表,将其相加

3. 代码

第一种方法的代码:

#!/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

结语

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

以上是关于LeetCode刷题07-简单 整数翻转 python语言的主要内容,如果未能解决你的问题,请参考以下文章

#leetcode刷题之路25- k个一组翻转链表

LeetCode Java刷题笔记—25. K 个一组翻转链表

LeetCode Java刷题笔记—226. 翻转二叉树

LeetCode刷题206-简单-翻转链表

LeetCode刷题206-简单-翻转链表

LeetCode刷题344-简单-翻转字符串