您的位置:首页 > 其它

*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()];
}

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: