91 解碼方法

2022-05-09 03:54:09 字數 1601 閱讀 4092

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

'

a' -> 1'b

' -> 2

...'

z' -> 26

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

示例 1:

輸入: "12"

輸出:

2解釋: 它可以解碼為 "ab

"(12)或者 "

l"(12)。

示例 2:

輸入: "

226"

輸出:

3解釋: 它可以解碼為 "bz

" (2

26), "

vf" (22

6), 或者 "

bbf" (2

26) 。

思路:dp問題,當前位置(個位)與前乙個位置(十位)上的兩個數字剛好組成兩位數,這兩位數決定了遞推方程:

後記:動態規劃的解法,時間複雜度o(n),空間複雜度o(1),感覺這兩點都沒啥可優化的了。但是感覺**寫的有點醜,可以整合下。

精簡後的**:

1

class

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