题解 | #把数字翻译成字符串#

把数字翻译成字符串

https://www.nowcoder.com/practice/046a55e6cd274cffb88fc32dba695668

class Solution {
public:
    int solve(string nums) {
        if (nums.empty() || nums[0] == '0') return 0;

        int n = nums.size();
        vector<int> dp(n + 1, 0);
        dp[0] = 1; // 空字符串有一种解码方式
        dp[1] = 1; // 一个有效的数字(非0)有一种解码方式

        for (int i = 2; i <= n; i++) {
            int oneDigit = nums[i - 1] - '0';
            int twoDigits = (nums[i - 2] - '0') * 10 + oneDigit;

            if (oneDigit >= 1 && oneDigit <= 9) {
                dp[i] += dp[i - 1];
            }
            if (twoDigits >= 10 && twoDigits <= 26) {
                dp[i] += dp[i - 2];
            }
        }
        return dp[n];
    }
};

全部评论

相关推荐

昨天 19:25
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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