2021年9月8日08:29:34
2021年9月8日09:18:29
class Solution { public int translateNum(int num) { String str = String.valueOf(num); int len = str.length(); int[] dp = new int [len]; if(len == 0) return 0; // 初始化 dp[0] 如果 先判断 如果len==1 直接就返回 不能再继续判断 if(len == 1) return 1; dp[0] = 1; // 初始化 dp[1] 注意事项 len >= 2 最开始写成了 len == 2 //len >= 2 判断条件可以去掉 因为运行到这步 已经 大于等于2了 if(len >= 2 && str.compareTo("25") <= 0 && str.compareTo("10") >= 0) dp[1] = 2; else dp[1] = 1; for(int i=2; i<len ; i++){ String cur = str.substring(i-1, i+1); // dp就是 如果 最后两位在这个范围内, dp[i] = dp[i-1] + dp[i-2] 否则的话就只能是 dp[i-1] if(cur.compareTo("25") <= 0 && cur.compareTo("10") >= 0) dp[i] = dp[i-1] + dp[i-2]; else dp[i] = dp[i-1] ; } return dp[len-1]; } }