leecode91 解碼方法

2021-10-11 05:21:32 字數 450 閱讀 7838

解碼方法

我們使用dp來做,令dp[i]表示前i個字串可以匹配的編碼方式的總數。有以下的測試用例:

200 不合規

20 [20]

1021 [10,2,1] [10,21]

4021 不合規

根據上面的例子,我們發現,出現在字串中間的0必須滿足組成20或者10,否則是不合規的。因此,我們首先判斷當前字元是否能和前面的字元組成10~26。如果可以,當組成的數字時20/10的時候,dp[i]=dp[i-2];如果組成的數字非20/10,有兩種可能,單獨組成乙個和兩個合併,因此轉移方程dp[i]=dp[i-1]+dp[i-2]。其次,如果不能組成10-26的數字,如果當前數字是0,那麼就不合法,否則dp[i]=dp[i-1].

class solution else

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