剑指 Offer 46. 把数字翻译成字符串

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];
    }
}
全部评论

相关推荐

10-17 23:18
已编辑
西北农林科技大学 Web前端
独行m:给25可以试试,但他只能给12,那就是纯纯的事精
秋招,不懂就问
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务