天天看點

LeetCode刷題07-簡單 整數翻轉前言一、題目描述二、題目解析三、代碼結語

LeetCode刷題07-簡單 整數翻轉前言一、題目描述二、題目解析三、代碼結語

文章目錄

算法作為極其重要的一點,是大學生畢業找工作的核心競争力,是以為了不落後與人,開始刷力扣算法題!

第一遍,不求最優解,但求能過!!!

📢: ❤布小禅❤ 📢 作者專欄: ❤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
      

堅持最重要,每日一題必不可少!

LeetCode刷題07-簡單 整數翻轉前言一、題目描述二、題目解析三、代碼結語