題目描述:
給出乙個 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 先...