import java.util.*;
public class Solution {
//解码:第i个字符结尾有多少种编码方式
//解码:i 单独解码,i与i-1结合解码,解码成功或失败
public int solve (String nums) {
// write code here
//1.创建dp
int n= nums.length();
int[] dp = new int[n];
char[] c = nums.toCharArray();
//2。初始化, 要初始化前两个,防止越界
//单独解码
if(c[0]!='0') dp[0] +=1; //解码成功
if(n==1) return dp[0]; //长度为1
//单独解码
if(c[0]!='0'&&c[1]!='0') dp[1] +=1;
//合并解码
int t = (c[0]-'0') *10 +c[1]-'0';
if(t>=10&&t<=26) dp[1] +=1;
//3.填表 dp[i] = dp[i-1] +dp[i-2]
for(int i=2;i<n;i++){
if(c[i]!='0') dp[i] += dp[i-1];
int tt = (c[i-1]-'0') *10 +c[i]-'0';
if(tt>=10&&tt<=26) dp[i] +=dp[i-2];
}
return dp[n-1];
}
}