zoukankan      html  css  js  c++  java
  • Leetcode Decode Ways

    A message containing letters from A-Z is being encoded to numbers using the following mapping:

    'A' -> 1
    'B' -> 2
    ...
    'Z' -> 26
    

    Given an encoded message containing digits, determine the total number of ways to decode it.

    For example,
    Given encoded message "12", it could be decoded as "AB" (1 2) or "L" (12).

    The number of ways decoding "12" is 2.


    解题思路:

    典型的dynamic programming

    判断dp[i-1] , dp[i-2] 是否有效

    recurrence formula: dp[i] += dp[i-1] if(s(i-1, i) is valid (1-9))  + dp[i-2] (if s(i-2, i)) is valid( 10-26))

    base case: dp[0] =1, dp[1] = 1(s(0) is valid) or 0 (s(0) is not valid)


    Java code:

    public class Solution {
        public int numDecodings(String s) {
            if(s == null || s.length() == 0 || s.equals("0")){
                return 0;
            }
            int[] dp = new int[s.length()+1];
            //base case: dp[0] dp[1]
            dp[0] = 1;
            if(isValid(s.substring(0,1))){
                dp[1] = 1;
            }else {
                dp[1] = 0;
            }
            for(int i = 2; i<= s.length(); i++){
                if(isValid(s.substring(i-1, i))){
                    dp[i] += dp[i-1];
                }
                if(isValid(s.substring(i-2,i))){
                    dp[i] += dp[i-2];
                }
            }
            return dp[s.length()];
        }
        
        public boolean isValid(String s){
            if(s.charAt(0) == '0') {
                return false;
            }
            int value = Integer.parseInt(s); // Integer.parseInt: translate string to int
            return value >=1 && value <= 26;
        }
    }

    Reference:

    1. http://www.programcreek.com/2014/06/leetcode-decode-ways-java/

    2. http://www.cnblogs.com/springfor/p/3896162.html

  • 相关阅读:
    Git-更新数据
    iOS开发-基本的网络知识
    iOS开发-单例模式
    iOS开发-多线程知识
    iOS开发-核心动画随笔
    iOS开发-关于网络状态的判断
    毕业设计--天气预报App
    iOS开发-UIColor转UIIamge方法
    iOS开发-用预处理指令代替注释
    JMS 消息服务
  • 原文地址:https://www.cnblogs.com/anne-vista/p/4963741.html
Copyright © 2011-2022 走看看