LeetCode 940 不同的子序列 II[动态规划] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 940 不同的子序列 II[动态规划] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
只要你能够转换思维去解决这道题,还是很容易,这个思路就是遍历到某个位置的字母,把它当做之前遍历的所有的字符串的尾部,这样就构建一个26位的数组,用来记录以当前字母为尾部的字符串的个数,最后求和返回即可,代码如下:
class Solution
public:
const int MOD = 1e9 + 7;
int distinctSubseqII(string s)
vector<long long> count(26);
for(int i = 0; i < s.size(); i ++)
long long sum = 0;
for(int j = 0; j < 26; j ++)
// 将当前所有字符串的数目以各个字母结尾的统计起来
sum = (sum + count[j]) % MOD;
// 本身+以该字母结尾的字符串
count[s[i] - 'a'] = sum + 1;
long long res = 0;
for(int i = 0; i < 26; i ++)
res = (res + count[i]) % MOD;
return res;
;
以上是关于LeetCode 940 不同的子序列 II[动态规划] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章