LintCode: 解码方法

原创 2017年01月04日 00:06:31

有一个消息包含A-Z通过以下规则编码

'A' -> 1
'B' -> 2
...
'Z' -> 26

现在给你一个加密过后的消息,问有几种解码的方式

样例

给你的消息为12,有两种方式解码 AB(12) 或者 L(12). 所以返回 2


class Solution {
public:
    /**
     * @param s a string,  encoded message
     * @return an integer, the number of ways decoding
     */
     
    int numDecodings(string& s) {
        // Write your code here
        int size = s.size();
        if(size == 0)
           return 0;
           
        int *dp = new int[size];
        dp[0] = 1*(s[0]!='0');
        if(size >= 2)
        {
            string t = s.substr(0,2);
            int n = atoi(t.c_str());
            dp[1] = dp[0]*(s[1]!='0') +  (n>0 && n<=26);
            
            for(int i=2; i<size; i++)
           {
               string t = s.substr(i-1,2);
               int n = atoi(t.c_str());
               dp[i] = dp[i-1]*(s[i]!='0') + (n>=10 && n<=26)*dp[i-2];
           }
        }
        return dp[size-1];
    }
};

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

LintCode数学题总结

LC上有一些标记为mathematics的题目,基本就是纯数学题或者数字题,也是需要掌握的。 517. Ugly Number 丑数,是一个正数,并且因子只包含2、3、5。此外,1也算丑数。0和负数都...

512.Decode Ways-解码方法(中等题)

解码方法 题目有一个消息包含A-Z通过以下规则编码 ‘A’ -> 1 ‘B’ -> 2 … ‘Z’ -> 26 现在给你一个加密过后的消息,问有几种解码的方式 样例给你的消息为12,有两种...

全排列枚举和递归

生成12345数字的全排列 暴力的代码 #include int main() { int a,b,c,d,e; for (a=1;a<=5;a++) for (b=1;b<=5;b++) ...

LintCode 374 螺旋矩阵的解决方法

最近在开心刷LintCode,其实我觉得刷题的目的就是锻炼你的解决问题的能力,不同的思想会带来不同的解决方案,找到最好的那个就是程序员的工作。但在找到最好的之前,你至少需要一点思想。 题目梗概给定一个...

LintCode 最大子数组(3种方法)

给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。 样例 给出数组[−2,2,−3,4,−1,2,1,−5,3],符合要求的子数组为[4,−1,2,1],其最大和为6 ...

android下播放器(软解码YUV数据)视频输出方法总结

在Android下输出视频画面,有很多种方法,每个都有自己的特点,比如将视频数据送回到java层然后用lockCanvas画出来这种方法的特点就是慢.     上面这个完全不值得提倡,视频数据从na...

SimpleGif,一款使用方法类似Glide但更省cpu、memory的Android ndk gif解码库,cmake方式,android studio项目

Gif文件是由多张静态图片组合而成,每张图片都有自己的显示时间,屏幕通过连续显示这些图片,以达到动态图的目的,由于这些特性,导致如果用java去解码,可能效率不是那么高,因为java能运行速度始终无法...

FFMPEG视音频编解码零基础学习方法

转自:http://blog.csdn.net/simanstar/article/details/24348641在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编...

FFMPEG视音频编解码零基础学习方法

在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者。在和大家探讨的过程中,我忽然发现了一个问题:在“...

[总结]FFMPEG视音频编解码零基础学习方法

在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者。在和大家探讨的过程中,我忽然发现了一个问题:在“...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)