题意:
题解:
动态规划
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];
}
}