[LeetCode] 940. Distinct Subsequences II
阿新 • • 發佈:2018-12-16
題:https://leetcode.com/problems/distinct-subsequences-ii/description/
題目
Given a string S, count the number of distinct, non-empty subsequences of S .
Since the result may be large, return the answer modulo 10^9 + 7.
Example 1:
Input: "abc" Output: 7 Explanation: The 7 distinct subsequences are "a", "b", "c", "ab", "ac", "bc", and "abc".
Example 2:
Input: "aba"
Output: 6
Explanation: The 6 distinct subsequences are "a", "b", "ab", "ba", "aa" and "aba".
Example 3:
Input: "aaa"
Output: 3
Explanation: The 3 distinct subsequences are "a", "aa" and "aaa".
Note:
- S contains only lowercase letters.
- 1 <= S.length <= 2000
題目大意
求出字串中所有不重複的子序列字串 的數目。
思路
資料:https://www.jianshu.com/p/02501f516437
寫的特別好。
class Solution {
static final int MOD = 1000000007;
public int distinctSubseqII(String S) {
int Slen = S.length();
int[] dp = new int[26];
for(int i = 1 ;i <=Slen;i++){
int tailWithChar = 0;
for(int j = 0;j<26;j++)
tailWithChar = (tailWithChar+dp[j])%MOD;
dp[S.charAt(i-1)-'a'] = (tailWithChar+1)%MOD;
}
int res = 0;
for(int j = 0 ;j <26;j++)
res = (res + dp[j])%MOD;
return res;
}
}