一条包含字母 A-Z 的消息通过以下的方式进行了编码:

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

除了上述的条件以外,现在加密字符串可以包含字符 '*'了,字符'*'可以被当做1到9当中的任意一个数字。

给定一条包含数字和字符'*'的加密信息,请确定解码方法的总数。

同时,由于结果值可能会相当的大,所以你应当对109 + 7取模。(翻译者标注:此处取模主要是为了防止溢出)

示例 1 :

输入: "*"
输出: 9
解释: 加密的信息可以被解密为: "A", "B", "C", "D", "E", "F", "G", "H", "I".

示例 2 :

输入: "1*"
输出: 9 + 9 = 18(翻译者标注:这里1*可以分解为1,* 或者当做1*来处理,所以结果是9+9=18)

说明 :

  1. 输入的字符串长度范围是 [1, 105]。
  2. 输入的字符串只会包含字符 '*' 和 数字'0' - '9'。

class Solution {
public:
    int numDecodings(string s) {
       long e0 = 1, e1 = 0, e2 = 0, f0 = 0, M = 1e9 + 7;
        for (char c : s) {
            if (c == '*') {
                f0 = 9 * e0 + 9 * e1 + 6 * e2;
                e1 = e0;
                e2 = e0;
            } else {
                f0 = (c > '0') * e0 + e1 + (c <= '6') * e2;
                e1 = (c == '1') * e0;
                e2 = (c == '2') * e0;
            }
            e0 = f0 % M;
        }
        return e0; 
    }
};

639. 解码方法 2相关推荐

  1. 639. 解码方法 II

    639. 解码方法 II 一条包含字母 A-Z 的消息通过以下的方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 要 解码 一条已编码的消息,所有的数 ...

  2. LeetCode 371. 两整数之和(异或操作) / 639. 解码方法 II(动态规划)/ 437. 路径总和 III

    371. 两整数之和 2021.9.26 每日一题 题目描述 给你两个整数 a 和 b ,不使用 运算符 + 和 - ​​​​​​​,计算并返回两整数之和. 示例 1: 输入:a = 1, b = 2 ...

  3. 125. Leetcode 91. 解码方法 (动态规划- 字符串系列)

    步骤一.确定状态: 确定dp数组及下标含义 dp[i]表示的是到i这个位置的字符串的解码方法 步骤二.推断状态方程: dp[i]的推导会取决于当前s[i]的字符情况以及前一位字符,具体如下: 如果当前 ...

  4. Leetcode 91. 解码方法 (每日一题 20211013)

    一条包含字母 A-Z 的消息通过以下映射进行了 编码 :'A' -> 1 'B' -> 2 ... 'Z' -> 26 要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映 ...

  5. LeetCode 90子集Ⅱ91解码方法

    微信搜一搜:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打卡群,欢迎 ...

  6. 曼彻斯特解密_曼彻斯特编码解码方法与流程

    本发明涉及一种曼彻斯特编码解码方法,属于集成电路技术领域. 背景技术: RFID在电子领域被广泛采用,解125KHz RFID编码可以通过专用芯片或者单片机软件来解决.使用专用芯片会增加硬件复杂度,增 ...

  7. 力扣--91. 解码方法

    力扣–91. 解码方法 文章目录 力扣--91. 解码方法 一.题目描述 二.解题思路 三.代码 一.题目描述 一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' - ...

  8. leetcode91. 解码方法

    一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 - 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数. 示例 1: ...

  9. LeetCode 91. 解码方法(动态规划)

    1. 题目 一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数 ...

  10. Leetcode--91. 解码方法

    一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数. 示例 1 ...

最新文章

  1. BC25通过LWM2M连接电信AEP(ctwing)
  2. CPU缓存与CPU性能的关系
  3. 高级php程序员面试题2019,2019最新PHP模拟面试题及答案
  4. 24行代码-Leecode 2063. 所有子字符串中的元音——Leecode周赛系列
  5. 中小企业邮件系统选型攻略
  6. C#中的ForEach
  7. php sqlsrv 分页,Php+SqlServer如何实现分页显示
  8. Java——网络编程三要素
  9. linux登录后自动打开终端,linux登录信息/打开终端信息
  10. 【实习生面试】阿里前端实习生一面流程及题目
  11. 使用Kubuntu运行命令对话框(Alt + F2)
  12. android win7 共享网络打印机,详解win7共享打印机如何设置
  13. layui模板引擎嵌套
  14. Android中应用分包的方法(Apk Splits)
  15. 为什么算法这么难???
  16. 第三章 培养工作兴趣
  17. nginx部署、配置优化
  18. c语言 Linux CURL发送Http get请求 带参数
  19. 手把手教你打造全宇宙最强 Firefox 浏览器
  20. “Why Should I Trust you ?”Explaining the Predictions of Any Classififier.-对分类预测进行解释

热门文章

  1. 实现对span标签的多选单选功能_如何在Notion中做多级标签?-Notion102
  2. TextBox的OnTextboxChanged事件里对Text重新赋值带中文, 导致崩溃
  3. 测试C++代码与WebBrowser HTML的互动
  4. Node.js开发指南中的例子(mysql版)
  5. 因为机遇,不会轻易悲伤
  6. Objective-C 基础,类和对象,方法和消息,已声明的属性和存取方法,块对象,协议和范畴类,预定义类型和编码策略...
  7. Http Status Code (http 状态号)
  8. SpringBoot动漫弹幕网站 cartoon.liuyanzhao.com
  9. catv系统主要有哪三部分组成_光纤通信系统的组成与特点
  10. lpop 原子_从夸克到原子,到元素周期表