• 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.

    [解题思路]

    [Thoughts]
    Similar as "[LeetCode] Climbing Stairs, Solution". DP. Just add some logic to compare character.


    Transformation function as:
    Count[i] = Count[i-1]  if S[i-1] is a valid char
           or   = Count[i-1]+ Count[i-2]  if S[i-1] and S[i-2] together is still a valid char

    f1 表示 fn-1; f2 表示 fn-2;

     1 public class Solution {
     2     public int numDecodings(String s) {
     3         if(s == null || s.length() == 0) return 0;
     4         int len = s.length();
     5         if(len==1) return check1(s.charAt(0));
     6         if(len>=1 && s.charAt(0)=='0') return 0;
     7         int f2= 1,f1=0,fn=0;
     8         f1 = check1(s.charAt(0))*check1(s.charAt(1))+ check2(s.charAt(0),s.charAt(1));
     9         for(int i=2;i<len;i++){
    10             if(check1(s.charAt(i))==1) 
    11                 fn += f1;
    12             if(check2(s.charAt(i-1),s.charAt(i))==1)
    13                 fn += f2;
    14             if(fn == 0) 
    15                 return 0;
    16             f2 = f1;
    17             f1 = fn;
    18             fn = 0;
    19                 
    20         }
    21         return f1;
    22     }
    23     public int check1 (char a){
    24         return (a>='1' && a<= '9')?1:0;
    25     }
    26     public int check2 (char a,char b){
    27         if(a=='1'||(a=='2'&& (b>='0'&&b<='6'))) return 1;
    28         else return 0;
    29     }
    30 }
  • 相关阅读:
    java编程规范
    Servlet生命周期
    BBS
    Hibernate主键自增策略
    MyBatis举例以及连接数据库过程
    myBatis框架的配置部分
    持续集成
    2017-02-23 .NET Core Tools转向使用MSBuild项目格式
    记录表TABLE中 INDEX BY BINARY_INTEGER 的作用
    什么是 BIND 变量?
  • 原文地址:https://www.cnblogs.com/RazerLu/p/3537895.html
Copyright © 2020-2023  润新知