在 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

以上是 在 Python 中查找不同子序列数量的程序 的全部内容, 来源链接: utcz.com/z/353561.html

回到顶部