
文章目錄
算法作為極其重要的一點,是大學生畢業找工作的核心競争力,是以為了不落後與人,開始刷力扣算法題!
第一遍,不求最優解,但求能過!!!
📢: ❤布小禅❤ 📢 作者專欄: ❤Python❤ ❤Java❤ 這是我刷第 2/100 道力扣簡單題
給你一個 32 位的有符号整數 x ,傳回将 x 中的數字部分反轉後的結果。
如果反轉後整數超過 32 位的有符号整數的範圍 [−231, 231 − 1] ,就傳回 0。
假設環境不允許存儲 64 位整數(有符号或無符号)。
難度:簡單
數字翻轉,意思就是,給你一個152傳回251,給-321,傳回-123
-
我想到的是,先轉為字元串
然後判斷第一個元素是否為
-
然後去掉負号,再倒序
反轉後轉為整數,判斷大小
-
根據數學方法來看,怎麼将這個整數翻轉
首先我們需要知道,把一個整數拆開,需要些什麼操作
先除以是,然後取餘數,餘數就是整數的個位數,然後再把整數減去個位數,再除以十
然後接着上面的操作,直到取餘數為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
堅持最重要,每日一題必不可少!