Leecode 91. 解码方法

var numDecodings = function(s) {
    var n = s.length
    // dp[i][0]代表着到达下标i时候并且末尾数字是两位数的情况s可以拆成多少个 满足要求的数字的组合
    // dp[i][1]代表着到达下标i时候并且末尾数字是1位数的情况s可以拆成多少个 满足要求的数字的组合
    var dp = new Array(n)

    for(let i=0;i<n;i++){
        dp[i] = new Array(2)
    }

    dp[0][0] = 0
    if(s[0]>0){
        dp[0][1] = 1
    }else{
        dp[0][1] = 0
    }

    for(let i =1;i<n;i++){
        if(s[i]!=0){
            dp[i][1] = dp[i-1][0]+dp[i-1][1]
            if(0<s.slice(i-1,i+1)&&s.slice(i-1,i+1)<27){
                dp[i][0]=dp[i-1][1]
            }else{
                dp[i][0] = 0
            }
        }else{
            dp[i][1] = 0
            if(0<s.slice(i-1,i+1)&&s.slice(i-1,i+1)<27){
                dp[i][0] = dp[i-1][1]
            }else{
                dp[i][0] = 0
            }

        }
    }

    return dp[n-1][0]+dp[n-1][1]
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用FFmpeg.AutoGen库解码摄像头的视频流,您可以按照以下步骤进行操作: 1. 首先,确保已经安装了FFmpeg库,并将FFmpeg.AutoGen包添加到您的C#项目中。 2. 在您的代码中,使用FFmpeg.AutoGen命名空间,并引入相关的类和结构体。 3. 初始化FFmpeg库。在应用程序启动时,调用`ffmpeg.av_register_all()`方法来初始化FFmpeg库。 4. 打开摄像头设备。使用`ffmpeg.avformat_open_input()`方法打开摄像头设备,并设置相关的参数。 5. 查找视频流。使用`ffmpeg.av_find_best_stream()`方法查找视频流的索引。 6. 获取视频流的解码器上下文。使用`ffmpeg.avcodec_find_decoder()`方法查找视频解码器,并使用`ffmpeg.avcodec_alloc_context3()`方法解码器分配上下文。 7. 打开视频解码器。使用`ffmpeg.avcodec_open2()`方法打开视频解码器。 8. 读取数据包。使用`ffmpeg.av_read_frame()`方法从摄像头设备中读取视频数据包。 9. 解码数据包。对于视频数据包,使用`ffmpeg.avcodec_send_packet()`方法将数据包发送给解码器,然后使用`ffmpeg.avcodec_receive_frame()`方法解码器中接收解码后的帧。 10. 处理解码后的帧。根据需要,您可以对解码后的帧进行处理、显示或保存等操作。 11. 释放资源。在程序结束时,记得释放相关的资源,包括关闭设备、释放解码器和释放内存等。 请注意,这只是一个基本示例,实际使用时可能需要根据您的具体需求进行更多的参数设置和错误处理。还可以根据需要进行音频解码、处理和保存等操作。 希望这个示例能对您有所帮助!如果您有任何更具体的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值