Leetcode-940 Distinct Subsequences II(不同的子序列 II)
Posted Asurudo Jyo の 倉 庫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode-940 Distinct Subsequences II(不同的子序列 II)相关的知识,希望对你有一定的参考价值。
1 class Solution 2 { 3 public: 4 int distinctSubseqII(string S) 5 { 6 int n = S.size(); 7 int mod = 1000000007; 8 int h[2002],last[2002],dp[2002]; 9 char a[2002]; 10 memset(h,0,sizeof(h)); 11 memset(last,0,sizeof(last)); 12 memset(dp,0,sizeof(dp)); 13 for(int i=1; i<=n; ++i) 14 { 15 a[i]=S[i-1]; 16 last[i]=h[a[i]]; 17 h[a[i]]=i; 18 } 19 for(int i=1; i<=n; ++i) 20 { 21 if(!last[i]) 22 dp[i]=dp[i-1]*2+1; 23 else 24 dp[i]=dp[i-1]+dp[i-1]-dp[last[i]-1]; 25 if(dp[i]<0) 26 dp[i]+=mod; 27 dp[i]%=mod; 28 } 29 return dp[n]; 30 } 31 };
代码借鉴:https://blog.csdn.net/icefox_zhx/article/details/77254400
以上是关于Leetcode-940 Distinct Subsequences II(不同的子序列 II)的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 940 不同的子序列 II[动态规划] HERODING的LeetCode之路
2020 Multi-University Training Contest 1-1004 Distinct Sub-palindromes