《python算法与数据结构2000讲》0727. 最小窗口子序列
- 标签:字符串、动态规划、滑动窗口
- 难度:困难
题目大意
给定字符串 s1
和 s2
。
要求:找出 s1
中最短的(连续)子串 w
,使得 s2
是 w
的子序列 。如果 s1
中没有窗口可以包含 s2
中的所有字符,返回空字符串 ""
。如果有不止一个最短长度的窗口,返回开始位置最靠左的那个。
解题思路
这道题跟「76. 最小覆盖子串」有点类似。但这道题中字符的相对顺序需要保持一致。求解的思路如下:
- 向右扩大窗口,匹配字符,直到匹配完
s2
的最后一个字符。 - 当满足条件时,缩小窗口,并更新最小窗口的起始位置和最短长度。
- 缩小窗口到不满足条件为止。