一條包含字母a-z
的訊息通過以下方式進行了編碼:
'給定乙個只包含數字的非空字串,請計算解碼方法的總數。a' -> 1'b
' -> 2
...'
z' -> 26
示例 1:
輸入: "12"示例 2:輸出:
2解釋: 它可以解碼為 "ab
"(12)或者 "
l"(12)。
輸入: "思路:dp問題,當前位置(個位)與前乙個位置(十位)上的兩個數字剛好組成兩位數,這兩位數決定了遞推方程:226"
輸出:
3解釋: 它可以解碼為 "bz
" (2
26), "
vf" (22
6), 或者 "
bbf" (2
26) 。
後記:動態規劃的解法,時間複雜度o(n),空間複雜度o(1),感覺這兩點都沒啥可優化的了。但是感覺**寫的有點醜,可以整合下。
精簡後的**:
1class
solution else
if(s[i - 1] == '
1' || (s[i-1] == '
2' && s[i] < '
7' && s[i] > '0'
)) 15 pre =temp;16}
17return
cur;18}
19 };
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...