zoukankan      html  css  js  c++  java
  • 91. Decode Ways

        /*
         * 91. Decode Ways
         * 12.20 by Mingyang
         * 题意解析:给你一串数字,解码成英文字母。
         * 类似爬楼梯问题,但要加很多限制条件。
         * 定义数组number,number[i]意味着:字符串s[0..i-1]可以有number[i]种解码方法。
         * 回想爬楼梯问题一样,number[i] = number[i-1] + number[i-2]
         * 但不同的是本题有多种限制:
         * 第一: s[i-1]不能是0,如果s[i-1]是0的话,number[i]就只能等于number[i-2]---末尾数字不能为0
         * 比如说110的数量和1是一样的(少两个)
         * 第二,s[i-2,i-1]中Integer.parseInt(s.substring(i-2,i))获得的整数必须在10到26之间。
         */
     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' ? 1 : 0;
            for(int i = 2; i <= n; i++) {
                int first = Integer.valueOf(s.substring(i-1, i));
                int second = Integer.valueOf(s.substring(i-2, i));
                if(first >= 1 && first <= 9) {
                   dp[i] += dp[i-1];  
                }
                if(second >= 10 && second <= 26) {
                    dp[i] += dp[i-2];
                }
            }
            return dp[n];
        }
    
    
    

  • 相关阅读:
    Vue DatePicker和不可用
    API图片路径和超链接语义化转换
    jQuery常用插件大全
    前端面试必备技巧整理
    堆与堆排序/Heap&Heap sort
    第k大的数
    POJ 2083 Fractal 分形题目
    最大子数组问题/Maximum Subarray
    一个简单的随机数生成算法
    成绩排序
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5496796.html
Copyright © 2011-2022 走看看