115. 不同的子序列
解法一:回溯(暴力)
class Solution:
def numDistinct(self, s: str, t: str) -> int:
self.count = 0 #全局统计
tmp = ""
self.backtrack(0, tmp, s, t)
return self.count
def backtrack(self, idx, tmp, s, t):
#找到一个t
if tmp == t:
self.count += 1
#剩余部分达不到tmp长度时,直接pass
if len(tmp) + len(s) - idx < len(t):
return
else:
#对s串的idx位置到串末,逐个试探
for i in range(idx, len(s)):
tmp += s[i]
#对下一位递归
self.backtrack(i + 1, tmp, s, t)
tmp = tmp[:-1]解法二:dp
最后更新于