題目給定乙個數字,我們按照如下規則把它翻譯為字串:0 翻譯成 「a」 ,1 翻譯成 「b」,……,11 翻譯成 「l」,……,25 翻譯成 「z」。乙個數字可能有多個翻譯。請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。0思路 動態規劃(1)25以內的數字可以進行組合,所以最多兩位組合<=n
um<231
0 <= num < 2^
0<=n
um<23
1
(2)每次可以選擇乙個數字或兩個數字用來合併成乙個字元:
(3)如果上乙個字元是0或合併後大於25,就無法組合成可轉換的數字,即不能合成乙個字元。
c++
class
solution
return dp[str.
size()
];}}
;
python
class
solution
:def
translatenum
(self, num:
int)
->
int:
numstr =
str(num)
dp =[0
]*11 dp[0]
=1dp[1]
=1for i in
range(1
,len
(numstr)):
if numstr[i-1]
=='0'
or numstr[i-
1:i+1]
>
'25'
: dp[i+1]
= dp[i]
else
: dp[i+1]
= dp[i]
+ dp[i-1]
return dp[
len(numstr)
]
《劍指offer》面試題46 把數字翻譯成字串
思路 下面我們從自上而下和自下而上兩種角度分析這道題目,以12258為例 自上而下,從最大的問題開始,遞迴 12258 b 2258 m 258 bc 258 bw 58 mc 58 mz 8 bcc 58 bcz 8 bwf 8 mcf 8 mzi bccf 8 bczi bwfi mcfi bc...
面試題46 劍指offer 把數字翻譯成字串
題目 給定乙個數字,按照如下規則翻譯成字串 0翻譯成 a 1翻譯成 b 25翻譯成 z 乙個數字有多種翻譯可能,例如12258一共有5種,分別是bccfi,bwfi,bczi,mcfi,mzi。實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。思路 動態規劃,dp i 表示從個位到第i位,一共有...
面試題46 把數字翻譯成字串
給定乙個數字,我們按照如下規則把它翻譯為字串 0 翻譯成 a 1 翻譯成 b 11 翻譯成 l 25 翻譯成 z 乙個數字可能有多個翻譯。請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。示例 1 輸入 12258 輸出 5 解釋 12258有5種不同的翻譯,分別是 bccfi bwf...