劍指 面試題46 把數字翻譯成字串

2021-10-04 21:57:10 字數 1171 閱讀 7413

題目給定乙個數字,我們按照如下規則把它翻譯為字串:0 翻譯成 「a」 ,1 翻譯成 「b」,……,11 翻譯成 「l」,……,25 翻譯成 「z」。乙個數字可能有多個翻譯。請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。0

<=n

um<231

0 <= num < 2^

0<=n

um<23

1

思路 動態規劃(1)25以內的數字可以進行組合,所以最多兩位組合

(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...