zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    第二次冲刺每日站立会议10(完结)
    第二次冲刺每日站立会议09
    第二次冲刺每日站立会议08
    找bug
    测试计划
    博客园的意见与建议
    第二次每日站立会议07
    个人总结
    学习进度条(第十六周)
    梦断代码阅读笔记03
  • 原文地址:https://www.cnblogs.com/RazerLu/p/3537895.html
Copyright © 2011-2022 走看看