LC91 Decode Ways

Posted vaevaevae

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LC91 Decode Ways相关的知识,希望对你有一定的参考价值。

典型的动态规划题,和《剑指offer》中的矩形覆盖题相似,只不过要考虑不同的边界情况。

另外对于《剑指offer》中的矩形覆盖题,值得考虑的是当矩形是n*n时,会有多少种覆盖的情况?

技术分享
 1 class Solution {
 2 public:
 3     int numDecodings(string s) {
 4         if(s==""||s[0]==0)
 5             return 0;
 6         if(s.length()==1&&s[0]!=0)
 7             return 1;
 8         if(s.length()>=2&&s[1]==0)
 9         {
10             if((s[0]-0)*10+s[1]-0>20)
11                 return 0;
12         }
13         int len=s.length();
14         vector<int> iv(len,0);
15         int flag=0;
16         if(s[0]!=0&&s[1]!=0)
17         {
18             iv[0]=1;iv[1]=1;
19             if((s[0]-0)*10+s[1]-0<=26)
20                 iv[1]++;
21         }
22         else if(s[0]!=0&&s[1]==0)
23         {
24             iv[0]=1;iv[1]=1;flag=1;
25         }
26         for(int i=2;i<len;i++)
27         {
28             if(s[i]==0)
29             {
30                 if(flag==1)
31                     return 0;
32                 if((s[i-1]-0)*10+s[i]-0>20)
33                     return 0;
34                 iv[i]=iv[i-2];
35                 flag=1;
36             }
37             else
38             {
39                 if(flag==1)
40                 {
41                     iv[i]=iv[i-1];
42                 }
43                 else
44                 {
45                     iv[i]=((s[i-1]-0)*10+s[i]-0<=26)?(iv[i-1]+iv[i-2]):iv[i-1];
46                 }
47                 flag=0;
48             }
49         }
50         return iv[len-1];
51     }
52 };
View Code

 

以上是关于LC91 Decode Ways的主要内容,如果未能解决你的问题,请参考以下文章

91. Decode Ways

leetcode 91. Decode Ways 解码方法(中等)

91. Decode Ways

leetcode 91. Decode Ways

LeetCode91. Decode Ways

91. Decode Ways