美文网首页
把数字翻译成字符串

把数字翻译成字符串

作者: 曾大稳丶 | 来源:发表于2022-05-10 10:32 被阅读0次

题目链接: https://leetcode.cn/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/

image.png

题目解析
这道题采用动态规划解决

动态规划流程.png 解析
public int translateNum(int num) {
    // fn = fn-1 || fn = fn-1 + fn-2

    String s = String.valueOf(num);

    int[] dp = new int[s.length()+1];
    dp[0] = 1;
    dp[1] = 1;

    for (int n = 2; n < s.length()+1 ; n++) {
        String temp = s.substring(n-2,n);
        if (temp.compareTo("10") >= 0 && temp.compareTo("25") <= 0 ){
            dp[n] = dp[n-1] + dp[n-2];
        }else {
            dp[n] = dp[n-1];
        }
    }

    return  dp[s.length()];
}

复杂度分析
空间复杂度: O(N)。
时间复杂度: O(N)。

这里空间复杂度可以进行优化为O(1):

public int translateNum(int num) {
    // fn = fn-1 || fn = fn-1 + fn-2

    String s = String.valueOf(num);

    int fn1 = 1;
    int fn2 = 1;

    for (int n = 2; n < s.length()+1 ; n++) {
        String temp = s.substring(n-2,n);
        int fn = temp.compareTo("10") >= 0 && temp.compareTo("25") <= 0 ? fn2 + fn1 : fn1;
        fn2 = fn1;
        fn1 = fn;
    }
    return  fn1;
}

相关文章

网友评论

      本文标题:把数字翻译成字符串

      本文链接:https://www.haomeiwen.com/subject/wjklurtx.html