LeetCode 91.解码方法

ways:

s[i] = 0 : if(s[i-1] == 1 || s[i-1] == 2) :s[i]只能和前一位绑定在一起,此时dp[i] = dp[i-2];else return 0 :无意义
s[i] != 0:if(s[i-1] ==1 ) : s[i]能和s[i-1]组合也能拆开,dp[i] = dp[i-1]+dp[i-2];else if(s[i-1] == 2 && s[i]<=6) : 也能组合,也能拆开,dp[i] = dp[i-1]+dp[i-2];else : 不能组合,只能拆开,dp[i] = dp[i-1];

eg:

2 2 0 6 1 1
dp 1 2 1 1 1 2

完整代码:

class Solution {
public:int numDecodings(string s) {vector<int> dp(s.size()+1 , 1);       // 多定义dp的一个范围,防止第1(2)个元素访问dp[i-2]产生越界;if(s[0] == '0')return 0;for(int i=1;i<s.size();i++){if(s[i] == '0'){if(s[i-1] == '1' || s[i-1] == '2')  // 只能和前面的数绑定在一起,唯一被译码dp[i+1] = dp[i-1];elsereturn 0;}else if(s[i-1] == '1' || (s[i-1] == '2' && s[i] <='6'))dp[i+1] = dp[i] + dp[i-1];                          // 能组合,也能拆开else    dp[i+1] = dp[i];                                                    // 只能拆开}return dp[s.size()];}
};

LeetCode 91.解码方法相关推荐

  1. leetcode: 91. 解码方法

    91. 解码方法 来源:力扣(LeetCode) 链接: https://leetcode.cn/problems/decode-ways/ 一条包含字母 A-Z 的消息通过以下映射进行了 编码 : ...

  2. Java实现 LeetCode 91 解码方法

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

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

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

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

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

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

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

  6. leetcode - 91. 解码方法

    一条包含字母 A-Z 的消息通过以下方式进行了编码: ′A′−>1'A' -> 1′A′−>1 ′B′−>2'B' -> 2′B′−>2 ......... ′Z′ ...

  7. LeetCode 91. 解码方法 Java/Python

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

  8. leetcode 91 解码方法 动态规划 递推

    // 各种特殊情况处理 // 选择从右往左,从左往右也是一样class Solution { public:int numDecodings(string s) {int n = s.length() ...

  9. leetcode 91. 解码方法(dp)

    解题思路 记忆化搜索,记录已经计算过的子问题 代码 func numDecodings(s string) int {temp:=make([]int,len(s),len(s))for i := r ...

最新文章

  1. [maven] 使用问题及思考汇总
  2. OO第三单元作业总结
  3. 为什么很多人喜欢把软件装在D盘,而不是系统盘C
  4. Vim 80列布局问题
  5. 读书笔记-沙漠里的细水微光
  6. linux要不要home分区,有必要建/home/boot分区吗
  7. Android Studio:64K问题com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
  8. oracle层级关系按列存储_几张图看懂列式存储
  9. sizeof是c语言的一种运算符,深入sizeof的使用详解
  10. 4.1 SE38数据类型
  11. java中对象排序_java中 对象的排序
  12. EditText控件(圆角处理)
  13. git pull checkout后文件权限变更
  14. 将计算机网口虚拟串口软件,虚拟串口及其在串口转以太网中的应用
  15. PC端哔哩哔哩动画下载的本地视频无法打开
  16. 程序员在体制内的工作与生活是怎样的?
  17. 在win7系统 Keil 开发环境下 Jlink 仿真器连不上解决办法
  18. python数据分析岗位做什么_给力!数据分析岗位内部人的建议,可以少走很多弯路...
  19. C2D 代码转设计稿是怎么实现的?
  20. gcc开启C99或C11标准支持

热门文章

  1. 腾讯智影+IDM进行数字人制作(无限使用)
  2. Error【1146】:Table 'xxx.xxx' doesn't exist问题原因及解决方法
  3. 20155339 Exp4 恶意代码分析
  4. sqlplus之 SGA和后台进程
  5. Fresnal菲涅尔物体自发光
  6. php都是乱码,PHP出现乱码该如何解决 看完你就知道了
  7. sdut算法分析oj题目整合
  8. 最新版(2021年1月)知乎x-zse-86 2.0版本加密破解分析 爬虫 破解反爬思路
  9. sgm3157功能_SGM3157模拟开关分析.pdf
  10. 搭建个人网站(1):申请域名