解題思路:(python3)
由整數反轉聯絡到整除取餘的方法,從而設定乙個for迴圈遍歷出整數的各位數字。同時將得到的各位數字可以以列表形式儲存起來,運用lambda函式將列表元素合併以後再返回。在這點上,也可也不採用列表的形式,而是在得到各位數字的同時進行乘法運算直接得到反轉後的數字,更為簡潔。要注意,判斷是否溢位不能在進入if判斷時進行,因為反轉後的數字也可能會溢位。
class
solution
:def
reverse
(self, num1:
int)
->
int:
import functools
num=
int(num1)
list=[
]if num>0:
lens=
len(
str(num)
) n=num%
10list
'%s'
% n)
for i in
range(1
,lens)
:list
'%s'
%(num//(10
**i)%10
))num3=
int(functools.
reduce
(lambda x,y:
str(x)
+str
(y),
list))
if num3>2**
31-1:
return
0else
:return num3
else
: num2=-1
*num
lens=
len(
str(num2)
) n=num2%
10list
'%s'
% n)
for i in
range(1
,lens)
:list
'%s'
%(num2//(10
**i)%10
))num3=
int(functools.
reduce
(lambda x,y:
str(x)
+str
(y),
list))
if num3>2**
31:return
0else
:return-1
*num3
要點:
items =[1
,2,3
,4,5
]# 列表
squared =
for i in items:
2)
map函式可以讓我們用一種簡單而漂亮得多的方式來實現:
items =[1
,2,3
,4,5
]squared =
list
(map
(lambda x: x**
2, items)
)
上面使用了匿名函式,也可以自定義函式:
items =[1
,2,3
,4,5
]def
f(x)
:return x**
2squared =
list
(map
(f, items)
)
# 匯入reduce
from functools import
reduce
# 定義函式
deff
(x,y)
:return x*y
# 定義序列,含1~10的元素
items =
range(1
,11)# 使用reduce方法
result =
reduce
(f,items)
print
(result)
map(),reduce()函式具體介紹
lambda函式具體介紹
leetcode反轉整數
題目 反轉整數 給定乙個 32 位有符號整數,將整數中的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 2 31,231 1 根據這個假設,如果反轉後的整數溢...
leetcode 整數反轉
給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321示例 2 輸入 123 輸出 321示例 3 輸入 120 輸出 21注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉後整數...
LeetCode 整數反轉
給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉後整數溢位那麼就返回 0。題目並不難,重點在於處理溢位問題。int max 2147483647 int min...