目录
学习目标
学习内容
392.判断子序列
115.不同的子序列
学习目标
- 392.判断子序列
- 115.不同的子序列
学习内容
392.判断子序列
392. 判断子序列 - 力扣(LeetCode)
https://leetcode.cn/problems/is-subsequence/
class Solution:
def isSubsequence(self, s: str, t: str) -> bool:
m = len(s)
n = len(t)
if m==0:return True
if m>n or n==0:return False
dp = [[False]*(n+1) for _ in range(m+1)]
dp[0] = [True]*(n+1)
for i in range(1,m+1):
for j in range(1,n+1):
dp[i][j] = (s[i-1]==t[j-1] and dp[i-1][j-1]) or dp[i][j-1]
if i==m and dp[i][j]:return True
#print(dp)
return False
115.不同的子序列
115. 不同的子序列 - 力扣(LeetCode)
https://leetcode.cn/problems/distinct-subsequences/
class Solution:
def numDistinct(self, s: str, t: str) -> int:
m = len(s)
n = len(t)
if n>m:return 0
dp = [[0]*(m+1) for _ in range(n+1)]
dp[0] = [1]*(m+1)
for i in range(1,n+1):
for j in range(1,m+1):
if t[i-1]==s[j-1]:
dp[i][j]=dp[i-1][j-1]
dp[i][j]+=dp[i][j-1]
#print(dp)
return dp[-1][-1]