91. 解码方法

 1 class Solution 
 2 {
 3 public:
 4     // 前i个字符串构成 == 前i-1个字符串构成(只有一个字符1-9)
 5     //                  +前i-2个字符串构成(只有两个字符10-26)
 6     int numDecodings(string s) 
 7     {
 8         int n = s.size();
 9         vector<int> dp(n + 1);
10         dp[0] = 1;//前零个字符串只有一种构成方法(空字符串)
11         for(int i = 1;i <= n;i ++)
12         {
13             if(s[i - 1] != '0') dp[i] += dp[i - 1];
14             if(i >= 2)
15             {
16                 int t = (s[i - 2] - '0') * 10 + s[i - 1] - '0';
17                 if(t >= 10 && t <= 26) dp[i] += dp[i - 2];
18             }
19         }
20         return dp[n];
21     }
22 };

 

posted @ 2020-04-16 09:58  Jinxiaobo0509  阅读(180)  评论(0)    收藏  举报