自己写滴~注意考虑包含0的特殊情况
class Solution {
public int numDecodings(String s) {
int l=s.length();
int[] array=new int[l];
char[] s_array=s.toCharArray();
for(int i=0;i<l;i++){
array[i]=(int)(s_array[i]-'0');
}
if(array[0]==0) return 0;
if(l==1) return array[0]==0?0:1;
int[] dp=new int[l];
dp[0]=array[0]==0?0:1;
if(s.contains("00")) return 0;
int temp=array[0]*10+array[1];
if(array[1]==0&&temp>26) return 0;
else if(array[1]==0&&array[0]!=0) dp[1]=1;
else if(temp>26) dp[1]=1;
else dp[1]=2;
if(l==2) return dp[1];
for(int i=2;i<l;i++){
if(array[i-1]==0) dp[i]=dp[i-1];
if(array[i]==0&&array[i-1]>=3) return 0;
else if (array[i]==0) dp[i]=dp[i-2];
else
dp[i]=(array[i-1]==1&&array[1]!=0)||(array[i-1]==2&&array[i]<=6)?dp[i-2]+dp[i-1]:dp[i-1];
}
return dp[l-1];
}
}