class Solution:
def numDistinct(self, s: str, t: str) -> int:
n,m = len(s),len(t)
#dp[i][j] [0,i-1]的s中有[0,j-1]的t的个数
dp = [[0]*(m+1) for _ in range(n+1)]
#s中有一个空字符串
for i in range(n+1):
dp[i][0] = 1
for i in range(1,n+1):
for j in range(1,m+1):
if s[i-1] == t[j-1]:
#选择当前字符和不选择当前字符
dp[i][j] = dp[i-1][j-1] + dp[i-1][j]
else:
dp[i][j] = dp[i-1][j]
return dp[n][m]
115. 不同的子序列
最新推荐文章于 2024-10-20 10:43:07 发布