LeetCode_91.解碼方法

Ramscy發表於2020-12-30

題目描述


在這裡插入圖片描述
在這裡插入圖片描述

思路


在這裡插入圖片描述

具體程式碼


package com.ramscy.dp_medium;

/**
 * @Auther: Ramscy
 * @Date: 2020/12/30 20:32
 * @Description:
 */
public class Solution_91 {

    public int numDecodings(String s) {

        if (s.charAt(0) == '0') {
            return 0;
        }
        int[] dp = new int[s.length() + 1];
        dp[0] = 1;
        dp[1] = 1;
        for (int i = 1; i < s.length(); i++) {
            if (s.charAt(i) == '0') {
                if (s.charAt(i - 1) != '1' && s.charAt(i - 1) != '2') {
                    return 0;
                } else {
                    dp[i + 1] = dp[i - 1];
                }
            } else {
                if (s.charAt(i - 1) == '1' || (s.charAt(i) >= '1' && s.charAt(i) <= '6' && s.charAt(i - 1) == '2')) {
                    dp[i + 1] = dp[i] + dp[i - 1];
                } else {
                    dp[i + 1] = dp[i];
                }
            }
        }
        return dp[dp.length - 1];
    }
}

相關文章