91 解碼方法

2021-10-10 06:05:41 字數 519 閱讀 3057

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

'a' -> 1

'b' -> 2

...'z' -> 26

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

題目資料保證答案肯定是乙個 32 位的整數。

示例 1:

輸入:"12"

輸出:2

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

dp[i]表示從位置0開始長度為i的字串中解碼方法的總數,合法字母是1或者2位數,首先s[:i-1]的解碼方式後加上s[i]也是合法的(s[i]!=0),對於s[:i-2],要看s[i-2:i-1]是否小於26,如果小於26,那麼s[:i-2]、s[i-2:i-1]、s[i]也是合法的

dp[i] = dp[i-1](s[i-1]!=0) + dp[i-2](s[i-2:i-1]<=26)

class solution 

return dp[n];

}};

91 解碼方法

方法一 動態規劃法 該問題可以通過動態規劃的方法進行求解,我們假設s i 代表一條長度為i的訊息,對應的解碼方法的總數為dp i 那麼這個值的大小和dp i 1 以及dp i 2 相關,因為解碼時只有一位或者兩位字元可以作為乙個原碼看待。當我們假設這條訊息的最後一位作為原碼時,它的取值範圍為 1 9...

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 或者 b...

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 或者 bb...