150强访谈中等

不同的子序列

“不同子序列”问题的详细指南和 Python 实现。

问题陈述

中等

给定两个字符串 s 和 t,返回 s 中等于 t 的不同子序列的数量。

字符串的子序列是在不影响剩余字符相对位置的情况下删除原始字符串中的一些(可以不是)字符而形成的新字符串。 (即“ACE”是“ABCDE”的子序列,而“AEC”不是)。

编写一个函数 numDistinct(s: str, t: str) -> int

约束条件
  • 1 <= len(s), len(t) <= 1000
  • s and t consist of English letters

示例

Example 1
Input
s = "rabbbit", t = "rabbit"
Output
3
Explanation

There are 3 ways you can generate "rabbit" from s: **rab**b**bit**, **ra**b**bbit**, **rab**bb**it**.

Example 2
Input
s = "babgbag", t = "bag"
Output
5
Explanation

There are 5 ways you can generate "bag" from s.

Need a Hint?
考虑使用 2D DP 特定的数据结构,例如集合或堆。
Edge Cases to Watch
  • 空输入结构
  • 单元素输入
  • 大数值范围

准备好解决了吗?

Open the problem in PyRun's browser-based Python editor. Your code runs fully offline — no server required.

在编辑器中打开
Found this breakdown helpful?

PyRun is built and maintained by an independent solo developer. If this helped your interview prep, consider buying a coffee!

Buy me a coffee

推荐的 Python 资源

通过相关的交互式教程、备忘单和代码比较来扩展您的知识。