leetcode 面試題46把數字翻譯成字串

2021-10-05 22:39:32 字數 957 閱讀 8833

解題思路:動態規劃,(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

rs​dp[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...