在 Python 中查找不同子序列数量的程序
假设我们有一个字符串s,我们必须计算字符串s的不同子序列的数量。如果答案太大,则返回结果模10^9+7。
所以,如果输入像s="bab",那么输出将是6,因为有6个不同的序列,它们是"a","b,"ba","ab","bb","abb".
示例
让我们看下面的实现来更好地理解
def solve(s): dp, m = [0] * len(s), 10**9 + 7 for i, char in enumerate(s): ind = s.rfind(char, 0, i) dp[i] = 1 + sum(dp[:i]) % m if ind == -1 else sum(dp[ind:i]) % m return sum(dp) % m s = "bab" print(solve(s))
输入
"abcd", "abcdbcd"输出结果
6