zoukankan      html  css  js  c++  java
  • LeetCode OJ: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.

    给一个数字,写出相应的解码方法,因为只需要给出解码的种数姐可以了,所以用dp比较简单就可以简单的解决了,答题的思路如下:

    对于"123"来说,1只有一种,2有1, 2以及12两种,3 可以是 2自己的组合加上3 亦可以是23的组合加上1 自己的组合   ,一直类推,递推关系就找到了,代码如下所示:

     1 class Solution {
     2 public:
     3     int numDecodings(string s) {
     4         ret.resize(s.size());
     5         if(!s.size()) return 0;
     6         for(int i = 0; i < s.size(); ++i){
     7             if(i > 0){
     8                 string tmp = s.substr(i-1, 2);
     9                 if(tmp >= "10" && tmp <= "26")
    10                     ret[i] += getRet(i - 2);
    11                 if(s[i] >= '1' && s[i] <= '9')
    12                     ret[i] += getRet(i - 1);
    13             }else{
    14                 if(s[0] >= '1' && s[0] <= '9')
    15                     ret[i] = 1;
    16             }
    17         }
    18         return ret[s.size() - 1];
    19     }
    20 
    21     int getRet(int index)
    22     {
    23         if(index < 0)
    24             return ret[0];
    25         else
    26             return ret[index];
    27     }
    28 private:
    29     vector<int> ret;
    30 };
  • 相关阅读:
    colemak,你用了吗?
    DELPHI一个对付内存汇漏的办法和技巧
    使用for in 循环数据集
    今天差点被断电搞死了,幸好IDE的备份救了我
    为什么继续选择DELPHI?
    无缘DELPHI的BUG
    DELPHI DOUBLE不解之迷
    失败的大牛事件委托,与我的委托
    2017-02-08 01:19:09 Scrapy: pk5_mylist
    2016-09-02 16:50:15 webqq 协议分析
  • 原文地址:https://www.cnblogs.com/-wang-cheng/p/4964728.html
Copyright © 2011-2022 走看看