這兩道題目都是有關於整數反轉的,所以就放在一起了,有關於整數反轉的問題主要有兩個方法,首先是字串的方法,這個方法簡單有效且速度很快;第二個方法就是利用數學方法。
給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1:輸入: 123;輸出: 321
示例 2:輸入: -123;輸出: -321
示例 3:輸入: 120;輸出: 21
假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 [−231, 231 − 1]。請根據這個假設,如果反轉後整數溢位那麼就返回 0。
這道題目分成三種情況討論,比較簡單,需要注意的是在反轉之後,不能讓0在最前面。
class
solution
:def
reverse
(self, x:
int)
->
int:
if x <0:
x =str(x)[1
:]x = x[::
-1].lstrip(
"0")
ifint
(x)>2**
31:return
0else
:return
int(
"-"+ x)
elif x ==0:
return
0else
: x =
str(x)[:
:-1]
.lstrip(
"0")
ifint
(x)>=2**
31:return
0else
:return
int(x)
這道題目也可以使用字串,並且效率很高,但是題目要求不用字串
判斷乙個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。示例 1:輸入: 121;輸出: true
示例 2:輸入: -121;輸出: false;解釋: 從左向右讀, 為 -121 。 從右向左讀, 為 121- 。因此它不是乙個回文數。
示例 3:輸入: 10;輸出: false;解釋: 從右向左讀, 為 01 。因此它不是乙個回文數。
這道題目的核心部分就在於通過讓整數不斷地除以10並記錄餘數。
class
solution
:def
ispalindrome
(self, x:
int)
->
bool
:if x <0:
return
false
elif x ==0:
return
true
else
: y = x
res =
0while y >0:
res = res *
10+ y %
10 y =
int(y /10)
return res == x
LeetCode 打家劫舍
你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。示例 1 輸入 1...
leetcode 打家劫舍
你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。示例 1 輸入 1...
LeetCode 程式設計
給乙個包含 n 個整數的陣列 s,找到和與給定整數 target 最接近的三元組,返回這三個數的和。for example,given array s and target 1.the sum that is closest to the target is 2.1 2 1 2 解答部分 publi...