一條包含字母 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...