有点意思的题目。用动态规划能够O(n)求解出来:a[i]代表子字符串string(0,i)的可能解码方式,a[i] = {a[i-1] or a[i-1]+a[i-2]}.

意思是假设string(i)不为0,至少a[i] == a[i-1],即一种解码方法是string{0,.....(i-1)}+string(i);

然后假设string{i-1,i}是合法的(注意合法概念。比方11,12,20。但04就不合法)。那么a[i] = a[i-1]+a[i-2],即另一种解码方法是string{0,.....(i-2)}+string{i-1,i}

另外值得注意是假设a[i]求出来为0,那就能够停止执行了,直接返回0,由于这个字符串没法被解码。

#include<iostream>
using namespace std;class Solution {
public:int numDecodings(string s) {if (s == "")return 0;if (s.at(0) == '0')return 0;int len = s.size();int* a = new int[len];a[0] = 1;for (int i = 1; i < len; i++){a[i] = 0;if (s.at(i) != '0')a[i] = a[i - 1];if (s.at(i - 1) != '0'){int val = (s.at(i - 1) - '0') * 10 + (s.at(i) - '0');if (val <= 26 && val > 0){if (i >= 2)a[i] += a[i - 2];elsea[i] += 1;}}if (a[i] == 0)return 0;}return a[len-1];}
};int main()
{Solution sol;string s = "12004";cout << sol.numDecodings(s) << endl;
}

LeetCode Decode Ways相关推荐

  1. [LeetCode] Decode Ways

    (Version 0.0) Decode Ways这道题从原理上说是一个比较简单的一维DP题目,用一个一维数组的元素dp[i] (i >= 1)来记录从头开始长度为i的substring有多少种 ...

  2. [leetcode]Decode Ways

    动态规划.要注意way+=dp[i-1]或dp[i-2]以及way+=1的条件.我看有的人把数组命名为count的. public class Solution {public int numDeco ...

  3. LeetCode Decode Ways(动态规划)

    题意:编码方式为a->1,...z->26,给出编码后的数字字符串,问有多种编码方式 思路:用dp(i)表示从第1个字符到第i个字符时的编码方式,因为编码一个字符时,只能是0-9,编码两个 ...

  4. 【重点!DP】LeetCode 639. Decode Ways II

    LeetCode 639. Decode Ways II 参考网址:https://zxi.mytechroad.com/blog/dynamic-programming/leetcode-639-d ...

  5. 【DFS + 记忆化递归 + DP】LeetCode 91. Decode Ways

    LeetCode 91. Decode Ways Solution1:我的答案 还是记录一下,最容易想到的是DFS,但是在第223/238个case上就超时了... class Solution { ...

  6. [LeetCode]91.Decode Ways

    题目 A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A ...

  7. 【LeetCode】91. Decode Ways 解题报告(Python)

    [LeetCode]91. Decode Ways 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fux ...

  8. Decode Ways leetcode java

    题目: A message containing letters from A-Z is being encoded to numbers using the following mapping: ' ...

  9. 91 Decode Ways

    为什么我常常对做题产生恐惧,因为可能为了一个不算难的问题不知不觉绕进去2个小时,这显然是不值得的.这题就是如此. 还要注意,java && 的优先级高于||的优先级,而不是同级. pu ...

最新文章

  1. go语言支持继承吗_Go语言的结构体嵌入为什么不算继承?
  2. 一个被 CEO 逼疯的技术负责人的检讨书
  3. Oracle左右全连接总结
  4. iframe和父窗体之间的互相监听方法
  5. gulp修改服务器端口,2.用gulp建立一个服务器
  6. php申请系统,PHP+MYSQL的文章管理系统(一)_php
  7. HDLBits答案(1)_Verilog语法基础
  8. matlab fftshift_数字信号处理没有Matlab?用Python一样很爽
  9. Java线程安全队列Queue实现原理
  10. BZOJ 1619 [Usaco2008 Nov]Guarding the Farm 保卫牧场:dfs【灌水】
  11. 我求求你了,GC日志打印别再瞎配置了
  12. Python处理各种压缩文件(bzip2,gzip,zip)
  13. 群辉服务器根目录新建文件夹,群晖 synology NAS 存储创建存储空间的方法
  14. 用lua实现ByteArray和ByteArrayVarint
  15. 知识蒸馏 | 综述:蒸馏机制
  16. 关于elasticsearch 基础篇(搜索文档)
  17. 大数据面试3分钟自我介绍_大数据开发工程师面试主要面试内容
  18. ORBSLAM2在ubuntu20.04上运行,实时单目摄像头(适用高版本的PCL,OpenCV4.2.0等)
  19. SKU与SPU的区别与联系
  20. 点对点视频分发:从早期互联网到ZB字节(Zettabyte)时代的分布式网络

热门文章

  1. 在Redhat 5.0 上安装Eclipse 3.6
  2. ExtJs 备忘录(6)—— GirdPanl表格(二) [ 搜索分页 ]
  3. Windows Server 2008中部署AD
  4. 交换机工作原理(下)
  5. [导入]深入了解OpenOffice.org(二){作者:路广}
  6. 数据结构 结构的声明 一个结构作为另一个结构的成员 单向链表的实现 双向链表的实现
  7. 3.2-3.3 Hive中常见的数据压缩
  8. Luogu4606 SDOI2018 战略游戏 圆方树、虚树、链并
  9. 低版本浏览器支持css3 Media查询的方法, ie6-ie8 不支持css3 的时候用respond.js,html5shiv.js 【非常实用哦】。。。。。。。。。。。。...
  10. 关于target=标签