解題思路:動態規劃,(1)得到num的每一位數字,從低位到高位用nums儲存(2)從低位到高位依次求解,狀態轉移方程如下:
d p[
i]
=dp[i-1]+dp[i-2]&10\leq(nums[i]*10+nums[i-1)<26\\ dp[i-1] &others \end \right.
dp[i]=
{dp[
i−1]
+dp[
i−2]
dp[i
−1]
10≤(
nums
[i]∗
10+n
ums[
i−1)
<26
othe
rsdp[i]
表示低(i+1)位可以表示的字串個數
**如下:
class
solution
:def
translatenum
(self, num:
int)
->
int:
if num <10:
return
1 nums =
while
(num):10
) num //=
10 size =
len(nums)
a1, a2 =1,
1for i in
range(1
,size):if
10<=
(nums[i]*10
+ nums[i-1]
)<26:
tmp = a1 + a2
else
: tmp = a1
a2 = a1
a1 = tmp
return a1
leetcode面試題46把數字翻譯成字串
題目描述 給定乙個數字,我們按照如下規則把它翻譯為字串 0 翻譯成 a 1 翻譯成 b 11 翻譯成 l 25 翻譯成 z 乙個數字可能有多個翻譯。請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。示例 1 輸入 12258 輸出 5 解釋 12258有5種不同的翻譯,分別是 bccf...
leetcode 面試題46 把數字翻譯成字串
題目鏈結 給定乙個數字,我們按照如下規則把它翻譯為字串 0 翻譯成 a 1 翻譯成 b 11 翻譯成 l 25 翻譯成 z 乙個數字可能有多個翻譯。請程式設計實現乙個函式,用來計算乙個數字有多少種不同的翻譯方法。class solution vector int nums while num int...
leetcode 面試題45 把陣列排成最小的數
解題思路 這道題的關鍵就在於如何重新定義排序規則,對待排序的字串x和y,如果 x y 構成的字串小於 y x 構成的字串,自然x應當排在y前面,反之亦然 class solution def minnumber self,nums list int str defcmp x,y if x y y x...