<pre name="code" class="java">//http://blog.csdn.net/xshalk/article/details/8186146 //动态规划的思想 public class Solution { public int numDecodings(String s){ if(s.length()==0) return 0; int len=s.length(); if(len<1) return 0; int[] numarray=new int[len]; int i=len-1; numarray[i]=(s.charAt(i)=='0')?0:1; i--; while(i>=0){ if(s.charAt(i)=='0') numarray[i]=0; else if(s.charAt(i)=='1'||(s.charAt(i)=='2'&&s.charAt(i+1)<='6')){//判断是10以上的数字则具有两种情况 if(i==len-2){ numarray[i]=numarray[i+1]+1; }else{ numarray[i]=numarray[i+1]+numarray[i+2]; } } else{ numarray[i]=numarray[i+1]; } i--; } return numarray[0]; } }