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.

    Solution:

    Use Dynamic Programming method to solve the problem, for positition i, we can get that

    if substring(i-1,i) is a valid string, the number of ways decoding from the beginning to position i equals the number of ways decoding from the beginning to position i-1;

    if substring(i-2,i) is a valid string, the number of ways decoding from the beginning to position i equals the number of ways decoding from the beginning to position i-2;

     1 public class Solution {
     2     public int numDecodings(String s) {
     3         if(s==null||s.length()==0)
     4             return 0;
     5         int[] dp=new int[s.length()+1];
     6         dp[0]=1;
     7         if(isValid(s.substring(0,1))){
     8             dp[1]=1;
     9         }else{
    10             dp[1]=0;
    11         }
    12         for(int i=2;i<=s.length();++i){
    13             if(isValid(s.substring(i-1, i)))
    14                 dp[i]=dp[i-1];
    15             if(isValid(s.substring(i-2, i))){
    16                 dp[i]+=dp[i-2];
    17             }
    18             
    19         }
    20         return dp[s.length()];
    21     }
    22     private boolean isValid(String s) {
    23         // TODO Auto-generated method stub
    24         int N=s.length();
    25         if(N==1){
    26             return(s.charAt(0)>='1'&&s.charAt(0)<='9');
    27         }else if(N==2){
    28             return((s.charAt(0)=='1'&&s.charAt(1)>='0'&&s.charAt(1)<='9')||
    29                     (s.charAt(0)=='2'&&s.charAt(1)>='0'&&s.charAt(1)<='6'));
    30         }
    31         return false;
    32     }
    33 }
  • 相关阅读:
    k8s之pod与Pod控制器
    使用kubeadm部署k8s
    lamp架构
    数据库安装和基本操作
    mysql基础
    Helm Chart 一键部署 Jenkins
    使用 Helm Chart 部署及卸载 istio
    使用 chart 部署 skywalking
    豆瓣电影TOP250和书籍TOP250爬虫
    如何使用 Skywalking Agent ?
  • 原文地址:https://www.cnblogs.com/Phoebe815/p/4261399.html
Copyright © 2011-2022 走看看