leetcode 91 爬楼梯

自己终于写出来了,孩子再丑也是自己的,把代码贴着,明天学习一下优秀代码

 1 class Solution {
 2 public:
 3     int numDecodings(string s) {
 4         int dp[s.size()+1];
 5         
 6         dp[0]=1;dp[1]=1;
 7         if(s=="") return 0;
 8         if(s[0]=='0') return 0;
 9         if(s.size()>=2&& s[1]=='0'&&s[0]>'2') return 0;
10         for(int i=2;i<=s.size();i++){
11             if(s[i-1]=='0'&&(s[i-2]>'2'||s[i-2]=='0')) return 0;
12             if(s[i-1]=='0'){
13                 dp[i]=dp[i-2];
14             }else{
15                 if(s[i-2]>'2'||(s[i-2]=='2'&&s[i-1]>'6')){
16                     dp[i]=dp[i-1];
17                 }else{
18                     dp[i]=dp[i-1]+dp[i-2];
19                     if(i>=3&&s[i-2]=='0'){
20                         dp[i]=dp[i-1];
21                     }
22                 }
23             }
24  
25         }
26         return dp[s.size()];
27     }
28 };

猜你喜欢

转载自www.cnblogs.com/joelwang/p/10480984.html