Leetcode 02 09 整數反轉 回文數

2022-09-07 07:39:11 字數 1624 閱讀 9449

題目描述:

給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。

首先,拿到這道題之後,先審題。有符號的數字需要考慮負數的情況,所以最好先判斷以下正負。每乙個數字反轉,可以先把每一位的數字取出來,然後再利用數學的方法構造出來反轉後的整數。以乙個三位數345為例,如果想要把5取出來,345/10=34 餘5,python有取餘數的函式(%)。之後再取4,用剛才的商34除以10取餘數,取3也是類似的方法。我們發現這是乙個遞迴的過程,一直取到商為0停止。因此可以寫出來遞迴部分的程式:

while

(x!=0)

: temp = x %

10 num = num *

10+ temp

x =int(a/

10)

但是python的取模是根據向下取整法的,而c/c++/j**a是基於向零取整的。

例如:在python中 :-53除以10=-6 …7 所以python中 -53%10=7

在c語言中,-53除以10=-5 … -3 所以c語言中 -53%10=-3

所以最好還是先取個絕對值再處理,還有也要注意一下0的情況。完整的函式如下:

class

solution

:def

reverse

(self, x:

int)

->

int:

num =

0 a =

abs(x)

while

(a!=0)

: temp = a %

10 num = num *

10+ temp

a =int(a/10)

if x >

0and num <

2147483647

:return num

elif x <

0and num <=

2147483647

:return

-num

else

:return

0

判斷乙個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。

這兩道題非常的相似。所以**就直接放啦:

class

solution

:def

ispalindrome

(self, x:

int)

->

bool

: num =

0 a =

abs(x)

while

(a!=0)

: temp = a %

10

a = a //

10 num = num*

10+ temp

if x >=

0and num == x:

return

true

else

:return

false

leetcode騰訊精選練習50(4) 整數反轉

給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉...

LeetCode簡單 Python (7)整數反轉

給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例1 輸入 123 輸出 321 示例2 輸入 123 輸出 321 示例3 輸入 120 輸出 21 注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉後整數...

整數取出每位數字 LeetCode 7 整數反轉

7.整數反轉 給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 輸入 123輸出 321輸入 123輸出 321輸入 120輸出 21一開始的思路是用除留餘數的方法,從後到前獲取x每一位上的值,然後構建新的數字res 如下 var reverse function x 先...