*LeetCode 90
2016-03-03 00:59
239 查看
https://leetcode.com/problems/decode-ways/
果然一碰dp就悲剧 这么简单的dp还是。。
dp[i]表示长度为i的字符串的识别的种类数
有几个trick
00 答案0
100 答案0
如果s[i]为‘0’ 那么以s[i]结尾的 如果拆成[0...i-1]和i 这两个字符串是没法拆的,,,因为最后一个是‘0’
const int SIZE = 5000+1;
int dp[SIZE];
class Solution {
public:
int numDecodings(string s) {
if(s.size() == 0 )return 0;
if(s[0]!='0')dp[0] = 1;
else dp[0]=0;
dp[1]=1;
for( int i=1; i<=s.size();i++ ) {
dp[i] = 0;
if( s[i-1]>'0' && s[i-1]<='9' )
dp[i] += dp[i-1];
if( i>=2 && (
s.substr(i-2,2)>="10" && s.substr(i-2,2)<="26"
) )
dp[i] += dp[i-2];
}
return dp[s.size()];
}
};
果然一碰dp就悲剧 这么简单的dp还是。。
dp[i]表示长度为i的字符串的识别的种类数
有几个trick
00 答案0
100 答案0
如果s[i]为‘0’ 那么以s[i]结尾的 如果拆成[0...i-1]和i 这两个字符串是没法拆的,,,因为最后一个是‘0’
const int SIZE = 5000+1;
int dp[SIZE];
class Solution {
public:
int numDecodings(string s) {
if(s.size() == 0 )return 0;
if(s[0]!='0')dp[0] = 1;
else dp[0]=0;
dp[1]=1;
for( int i=1; i<=s.size();i++ ) {
dp[i] = 0;
if( s[i-1]>'0' && s[i-1]<='9' )
dp[i] += dp[i-1];
if( i>=2 && (
s.substr(i-2,2)>="10" && s.substr(i-2,2)<="26"
) )
dp[i] += dp[i-2];
}
return dp[s.size()];
}
};
相关文章推荐
- 文件上传
- 网易公开课《Linux内核分析》学习心得-mykernel实验的实践和分析
- 错误记录:Resource ID #0x7f040006 type #0x12 is not valid
- 详解 CALayer 和 UIView 的区别和联系
- 深入探讨 Java 类加载器
- Hibernate学习篇05——联合主键(二)
- ***LeetCode 90 Subsets ii
- thinkphp3.2.3开发商城实战(一)
- 面试
- 栈[顺序栈]
- H-Index II
- IOS--AFNetworking POST与GET请求
- MFC双缓冲绘图
- 20160303 - 升级 Windows 10 版本 1511 后,文件夹默认打开方式为 cmd 的修复
- 个人进阶之路——安卓蓝牙模块(4)
- Linux下使用C语言返回年月日
- W6s数据传输格式
- iOS 第三方 需要 引用的库
- 自定义垂直滚动切换TextView
- 关于React使用中遇到的坑