zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 91 解码方法

    91. 解码方法

    一条包含字母 A-Z 的消息通过以下方式进行了编码:

    ‘A’ -> 1
    ‘B’ -> 2

    ‘Z’ -> 26
    给定一个只包含数字的非空字符串,请计算解码方法的总数。

    示例 1:

    输入: “12”
    输出: 2
    解释: 它可以解码为 “AB”(1 2)或者 “L”(12)。
    示例 2:

    输入: “226”
    输出: 3
    解释: 它可以解码为 “BZ” (2 26), “VF” (22 6), 或者 “BBF” (2 2 6) 。

    class Solution {
           public int numDecodings(String s) {
         if(s == null || s.length() == 0) {
                return 0;
            }
            int n = s.length();
            int[] dp = new int[n+1];
            dp[0] = 1;
            dp[1] = (s.charAt(0) == '0' ? 0 : 1);  
            for(int i=1; i<n; i++) {
                char c = s.charAt(i);
                char pre = s.charAt(i-1);
                dp[i+1] = c == '0' ? 0 : dp[i];
                if(pre == '1' || (pre == '2' && c <= '6')) {
                    dp[i+1] += dp[i-1];
                }
            } 
            return dp[n];
        }
    }
    
  • 相关阅读:
    eslint 规则
    我的.eslintrc.js
    shell命令
    .sync 修饰符的理解
    【HNOI 2018】寻宝游戏
    【BZOJ 2820】YY的GCD
    【Luogu P2664】树上游戏
    【HAOI 2012】高速公路
    句摘
    【SCOI 2008】奖励关
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13076219.html
Copyright © 2011-2022 走看看