LeetCode 91 解碼方法

2021-09-16 23:12:28 字數 1107 閱讀 5648

一條包含字母 a-z 的訊息通過以下方式進行了編碼:

'a' -> 1

'b' -> 2

...'z' -> 26

給定乙個只包含數字的非空字串,請計算解碼方法的總數。

示例 1:

輸入: "12"

輸出: 2

解釋: 它可以解碼為 "ab"(1 2)或者 "l"(12)。

示例 2:

輸入: "226"

輸出: 3

解釋: 它可以解碼為 "bz" (2 26), "vf" (22 6), 或者 "bbf" (2 2 6) 。

動態規劃感覺不容易理解啊tat,好菜好菜慢慢來

動態規劃,兩個限制條件

1:0不能單獨解碼

2:兩位數範圍在10到26之間

如果s [i

]s[ i ]

s[i]

不是0,那麼自己算一種解碼方式,加上dp[

i−1]

dp[i-1]

dp[i−1

] 如果i和i-1組成的數在10-26之間,算一種解碼方式,加上dp[

i−2]

dp[i-2]

dp[i−2

] 因為當 s[i

]=

0s [ i ]=0

s[i]=0

時前面的個數是不成立的,比如220

dp: 1 2 1

s : 2 2 0

加上0之後前面的2,2;22兩種情況就不可取了,因為2,2,0;22,0這種不合法,只能組成2,20;

i : 0 1 2

dp: 1 2 3

s : 2 2 6

i=2時

dp[i]+=dp[i-1] 2,2;22;合法

dp[i]+=dp[i-2] 2,26;合法

狀態方程

dp[i]=dp[i-1]+dp[i-2];//s[i]!='0';
class solution

}return dp[s.

size()

-1];

}};

LeetCode91 解碼方法

這題,我花了好大的功夫才通過,中途踩了很多坑,從這個15頂25踩,通過率只有10 多,就能看出這個題,雖然是乙個中等難度的題,但是並沒有那麼好做。看到題目,感覺有點像爬樓梯的那個?想到用動態規劃。第一次寫 沒有考慮0的情況,出錯,那麼就考慮吧,如果出現在頭,就返回0,出現的中間的話。不過我是從後往前...

LeetCode 91 解碼方法

一條包含字母a z的訊息通過以下方式進行了編碼 a 1 b 2 z 26 給定乙個只包含數字的非空字串,請計算解碼方法的總數。示例 1 輸入 12 輸出 2 解釋 它可以解碼為 ab 1 2 或者 l 12 示例 2 輸入 226 輸出 3 解釋 它可以解碼為 bz 2 26 vf 22 6 或者 ...

leetcode 91 解碼方法

一條包含字母a z的訊息通過以下方式進行了編碼 a 1 b 2 z 26給定乙個只包含數字的非空字串,請計算解碼方法的總數。示例 1 輸入 12 輸出 2解釋 它可以解碼為 ab 1 2 或者 l 12 示例 2 輸入 226 輸出 3解釋 它可以解碼為 bz 2 26 vf 22 6 或者 bbf...