LeetCode_91.解码方法

题目描述


LeetCode_91.解码方法_第1张图片
LeetCode_91.解码方法_第2张图片

思路


LeetCode_91.解码方法_第3张图片

具体代码


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];
    }
}

你可能感兴趣的:(LeetCode,java,算法,DP)