題目:spa
https://leetcode-cn.com/problems/decode-ways/code
解碼方法blog
(1) 若是S[i] == 0leetcode
① 若是(S[i-1] ==1 || S[i-1] ==2),dp[i]=dp[i-2]get
「110」->」1,2,1」class
② 不然返回0coding
(2) 若是(S[i-1]==2) &&(s[i] <=6),則dp[i]=dp[i-1]+dp[i-2]程序
(3) 若是S[i-1] == 1不管S[i]是多少,dp[i]=dp[i-1]+dp[i-2]方法
(1) Dp[0]=1,dp[-1]=1static
public static int numDecodings(String s) { if(s.length() == 0 || s == null || s.charAt(0)=='0'){ return 0; } char[] arr = s.toCharArray(); int[] arrInt = new int[arr.length]; for(int i = 0 ; i < arr.length ; i ++){ arrInt[i] = arr[i] - '1' + 1; } int num1 = 1,num2 = 1; int tmp = 1; for(int i = 1 ;i < arrInt.length ; i ++){ tmp = num2; if(arrInt[i] == 0){ if( arrInt[i-1] != 1 && arrInt[i-1]!=2) return 0; else{ tmp = num1; } }else{ if(arrInt[i-1]==1){ tmp = num1 + num2; } if(arrInt[i-1]==2 && arrInt[i] <= 6){ tmp = num1 + num2; } } num1=num2; num2 = tmp; } return tmp; }