import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 解码
* @param nums string字符串 数字串
* @return int整型
*/
public int solve (String nums) {
for (int i = 1; i < nums.length(); i++) {
if (nums.charAt(i) == '0')
if (nums.charAt(i - 1) != '1' && nums.charAt(i - 1) != '2')
return 0;
}
String[] split = nums.split("");
return solveStr(split, split.length - 1);
}
public int solveStr ( String[] split, int n) {
String s = split[n];
if (n == 0 && s.equals("0")) {
return 0;
}
if (n == 0) {
return 1;
}
if (split[n - 1].equals("0")) {
return solveStr(split, n - 1);
}
String s1 = split[n - 1] + s;
int i = Integer.parseInt(s1);
if (n == 1) {
if (s.equals("0")) {
if (i < 27) {
return solveStr(split, n - 1);
}
}
if (i < 27) {
return 1 + solveStr(split, n - 1);
}
return solveStr(split, n - 1);
}
if (split[n - 1].equals("0")) {
return solveStr(split, n - 1);
}
if (s.equals("0")) {
// if (i < 27) {
// return solveStr(split, n - 2) + solveStr(split, n - 1);
// }
return solveStr(split, n - 1);
} else {
if (i < 27) {
return solveStr(split, n - 2) + solveStr(split, n - 1);
}
return solveStr(split, n - 1) ;
}
}
}