心得:做动态规划的时候一定要知道,确定哪个值是确定的,
比如到底给1,2附初值,还是给0,1附初值。
代码:
class Solution { public int numDecodings(String s) { if(s==null||s.length()==0) return 0; char[] arr=s.toCharArray(); int[] nums=new int[s.length()+1]; nums[0]=1; if(arr[0]=='0') return 0; for(int i=1;i<=s.length();i++) { if(arr[i-1]!='0') nums[i]=nums[i]+nums[i-1]; if(i-2>=0&&(arr[i-2]-48)>0&&(arr[i-2]-48)*10+arr[i-1]-48>0&&(arr[i-2]-48)*10+arr[i-1]-48<=26) nums[i]=nums[i]+nums[i-2]; } return nums[s.length()]; } }