题意:
题解:
动态规划
class Solution { public int numDecodings(String s) { // 解码 方法的 总数 int n=s.length(); int[] dp=new int[n+1];//、初始值为0 dp[0]=1; for(int i=1;i<=n;i++){//n要寻找边界初始值 所以设置为1 if(s.charAt(i-1)!='0'){ dp[i]+=dp[i-1]; } if((i-2)>=0 && s.charAt(i-2)!='0' &&( ( (Integer.valueOf(s.charAt(i-1))-48) +((Integer.valueOf(s.charAt(i-2))-48 )*10) )<=26)){ //当 i 和 i+1 为十几 二十几时成立 dp[i]+=dp[i-2]; } } // Integer.valueOf(s.charAt(i-1))-48+(Integer.valueOf(s.charAt(i-2))-48)*10 )<=26 //( (s.charAt(i-2)-'0') * 10+ (s.charAt(i-1)-'0') <= 26) return dp[n]; } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)