題目連接: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 }