91 解碼方法

2022-07-19 08:24:12 字數 1151 閱讀 8077

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

思路:

第乙個元素如果是1,那麼就一種可能

如果加進來了乙個2,那麼兩種 1 - 2或者12

如果再加進來乙個2,那麼三種1 - 2 - 2 或者12 - 2或者乙個新的1 - 22

如果再加進來乙個2,那麼五種1 - 2 - 2 - 2或者12 - 2 - 2或者1 - 22 -2 或者兩個新的1 - 2 - 22和12 - 22

現在就可以看出來了,是乙個dp的演算法題,加進來的數可能是可以直接貼上去的,可能是要單獨的,也可能是沒有用的

這題如果沒有邊界的話,其實就是乙個很簡單的dp問題

class

solution

//如果只有最後一位=='0',則新加入的只能單獨放在最後,不能與最後一位合併(不能以0開頭)

else

if(arr[i-2]=='0')

//如果只有新加入的=='0',則新加入的不能單獨放置,必須與最後一位合併,並且如果合併結果大於26,返回0,否則

else

if(arr[i-1]=='0')

//如果 合併<=26: 則新加入可以「單獨」放在每個解碼結果之後後,並且如果以最後一位單獨結尾,此時可以合併

else

if(n>26)

//如果 合併》26: 此時最後一位又不能與新加入的合併,新加入的只能單獨放在dp[i]的每一種情況的最後

else

}return dp[dp.length-1];

}}

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