劍指 offer 46. 把數字翻譯成字串、
乙隻青蛙一次可以跳上1級台階,也可以跳上2級台階。求該青蛙跳上乙個 n 級的台階總共有多少種跳法。
答案需要取模 1e9+7(1000000007),如計算初始結果為:1000000008,請返回 1。
由於青蛙一次可以跳一格或者兩格,所以到達當前狀態的途徑有兩個:從前乙個台階跳過來或者從前數兩個台階跳過來,因此有關係:dp[i] = dp[i-1] + dp[i-2]
class
solution
:def
numways
(self, n:
int)
->
int:
dp =[0
]* n
if n ==
0or n==1:
return
1 dp[0]
=1dp[1]
=2for i in
range(2
,n):
dp[i]
= dp[i-1]
+ dp[i-2]
return dp[n-1]
%1000000007
給定乙個數字,我們按照如下規則把它翻譯為字串:0 翻譯成 「a」 ,1 翻譯成 「b」,……,11 翻譯成 「l」,……,25 翻譯成 「z」。乙個數字可能有多個翻譯。請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。
class
solution
:def
translatenum
(self, num:
int)
->
int:
s =str(num)
dp =
dict()
dp[0]
, dp[1]
=1,1
a, b =1,
1for i in
range(2
,len
(s)+1)
: a, b =
(a+b if
'10'
<= s[i-
2:i]
<=
'25'
else a)
, a dp[i]
= a return dp[
len(s)
]
然後發現,用122432627258356這個例子測試的時候 出現了尷尬的事情,
數了一下感覺不是我的問題,然後提交通過了.
劍指offer刷題記錄 跳台階
乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 對於本題,前提只有 一次 1階或者2階的跳法。a.如果兩種跳法,1階或者2階,那麼假定第一次跳的是一階,那麼剩下的是n 1個台階,跳法是f n 1 b.假定第一次跳的是2階,那麼剩下的...
OI刷題記錄
2014 4 18 poj3264 bzoj1699 balanced lineup rmq 2014 4 19 bzoj1012 jsoi2008 最大數maxnumber noi2004 鬱悶的出納員 bzoj3224 tyvj 1728 普通平衡樹 2014 4 20 bzoj1862 105...
面試刷題記錄
寫一段 判斷乙個包括 的表示式是否合法 注意看樣例的合法規則。給定乙個表示式a,請返回乙個bool值,代表它是否合法。測試樣例 a b 5 4 返回 true 測試樣例 a b 5 4 返回 false include vector include iostream using namespace ...