package leetcode;
public class offer_46 {
public int translateNum(int num) {
//爬楼梯问题,每次截取两个数字相当于爬两层,需要判断是否能够爬两层
String str=String.valueOf(num);
int dp[]=new int[str.length()];
dp[0]=1;
if(dp.length>1) {
if(Integer.valueOf(str.substring(0,2))<26) {
dp[1]=2;
}else {
dp[1]=1;
}
for(int i=2;i<str.length();i++) {
//截取当前字符和之前一个字符作为子串
String s=str.substring(i-1,i+1);
//数字超过25不能爬两层
if(Integer.valueOf(s)<26&&!s.startsWith("0")) {
dp[i]=dp[i-1]+dp[i-2];
}else {
dp[i]=dp[i-1];
}
}
}
return dp[str.length()-1];
}
public static void main(String[] args) {
// TODO Auto-generated method stub
offer_46 off=new offer_46();
System.out.println(off.translateNum(506));
}
}