LeetCode 91 解碼方法

2021-10-01 08:34:50 字數 933 閱讀 8538

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

'a'

->

1'b'

->2.

..'z'-

>

26

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

示例:

輸入:

"12"

輸出:2

解釋: 它可以解碼為 "ab"(1

2)或者 "l"(12)。

狀態轉移方程:d[i] = dp[i+1] + g(i,i+1) * dp[i+2]=> 可以看出需要從後往前遍歷。

注:dp後還可以「空間壓縮」到常數級別的空間複雜度,因為每次的dp[i]只與dp[i+1]dp[i+2]有關,因此我們可以用兩個變數來記錄並不斷更新dp[i+1]dp[i+2]。此外,在做動態規劃題目的時候,要特別注意「遍歷方向」的問題,要保證我們的演算法是「自底向上」求解的。(由小到大)

class

solution

;// 用變數定義長度的陣列,一般不可以在定義時初始化。(不推薦這麼做)

for(

int i = length-

1; i >=

0; i--)if

(i <= length-2&&

(str[i]

-'0'

)>0)

}

dp[i]

= temp;

}return dp[0]

;}};

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