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.

    Solution: the most important one is matrix[0] = 1. 

     1 public class Solution {
     2     public int numDecodings(String s) {
     3         // Start typing your Java solution below
     4         // DO NOT write main() function
     5         if(s == null || s.length() == 0) return 0;
     6         else{
     7             int[] matrix = new int[s.length()+1];
     8             matrix[0] = 1;
     9             matrix[1] = 1;
    10             if(Integer.valueOf(s.substring(s.length() -1, s.length())) == 0)
    11                 matrix[1] = 0;
    12             for(int i = s.length() - 2; i > -1; i --){
    13                 int sum = 0;
    14                 if(Integer.valueOf(s.substring(i, i+1)) > 0){
    15                     sum += matrix[s.length() - i - 1];
    16                 }
    17                 if(Integer.valueOf(s.substring(i, i+2)) < 27 && Integer.valueOf(s.substring(i, i+2)) > 9)
    18                     sum += matrix[s.length() - i - 2];
    19                 matrix[s.length() - i] = sum;
    20             }
    21             return matrix[s.length()];
    22         }
    23     }
    24 }

     第二遍:

    从前往后做,这样更简单。

     1 public class Solution {
     2     public int numDecodings(String s) {
     3         // Start typing your Java solution below
     4         // DO NOT write main() function
     5         if(s == null || s.length() == 0) return 0;
     6         int[] matrix = new int[s.length() + 1];
     7         matrix[0] = 1;
     8         for (int i = 0; i < s.length(); i ++){
     9             if (0 < Integer.valueOf(s.substring(i, i + 1)))
    10                 matrix[i + 1] += matrix[i];
    11             if (i > 0 && Integer.valueOf(s.substring(i - 1, i + 1)) < 27 && Integer.valueOf(s.substring(i - 1, i + 1)) > 9)
    12                 matrix[i + 1] += matrix[i - 1];
    13         }
    14         return matrix[s.length()];
    15     }
    16 }
  • 相关阅读:
    Radmin View3.5
    delphi安装fastreport6
    大华监控设备配置文件导入生成工具
    大华监控和天地伟业监控免输密码登录助手
    锐捷交换机常用配置命令【加精】
    锐捷交换机的配置命令大全
    H3C常用配置命令
    锐捷交换机配置命令
    Delphi 随手笔记,使用了DEV控件组件
    读取软件的版本信息 GetFileVersionInfo
  • 原文地址:https://www.cnblogs.com/reynold-lei/p/3340018.html
Copyright © 2011-2022 走看看