91.Decode Ways---dp

題目連接:https://leetcode.com/problems/decode-ways/description/ide

題目大意:將給出的字符串解碼,問有多少種解碼方式。解碼按照「ABC...Z"->1,2,3...26進行。好比」12「有兩種解碼方式:1 2(A B),12(L)。spa

法一(借鑑):dp。是裴波那挈數列的變形題,根本dp仍是裴波那挈數列:dp[i] = dp[i - 1] + dp[i - 2]。從前日後。代碼以下(耗時2ms):code

 1     //dp[i]表示從0到i的字符串的解碼方式的種類
 2     public int numDecodings(String s) {
 3         if(s.length() == 0) {
 4             return 0;
 5         }
 6         int dp[] = new int[s.length() + 1];
 7         //初始化0
 8         dp[0] = 1;
 9         //計算dp
10         for(int i = 1; i < dp.length; i++) {
11             dp[i] = (s.charAt(i - 1) == '0') ? 0 : dp[i - 1];
12             if(i > 1 && (s.charAt(i - 2) == '1' || (s.charAt(i - 2) == '2' && s.charAt(i - 1) <= '6'))) {
13                 dp[i] += dp[i - 2];
14             }
15         }
16         return dp[s.length()];
17     }
View Code
相關文章
相關標籤/搜索