Distinct Subsequences II LeetCode solution in C++
1class Solution {2public:3int distinctSubseqII(string s) {4int n = s.length();5int mod = 1e9 + 7;67vector<long long> dp(n + 1);8unordered_map<char, int> mp;910dp[0] = 1;11for (int i = 1; i <= n; i++) {12dp[i] = (2 * dp[i - 1]) % mod;13char ch = s[i - 1];1415if (mp.find(ch) != mp.end()) {16int j = mp[ch];17dp[i] = (dp[i] - dp[j - 1] + mod) % mod;18}19mp[s[i - 1]] = i % mod;20}21return dp[n] - 1;22}23};