![8a92276790c42f57eef35f845e4b5a9f.gif](https://img-blog.csdnimg.cn/img_convert/8a92276790c42f57eef35f845e4b5a9f.gif)
给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字符的最小子串。
示例:
输入: S = "ADOBECODEBANC", T = "ABC"
输出: "BANC"
说明:
1. 如果 S 中不存这样的子串,则返回空字符串 “”。
2. 如果 S 中存在这样的子串,我们保证它是唯一的答案。
解题思路
- Use two pointers: start and end to represent a window.
- Move end to find a valid window.
- When a valid window is found, move start to find a smaller window.
notice
:
- 因为字符可以重复,收缩窗口时需要根据window里面的字符出现频数是否与needs里面字符频数一致去更新count。
-
在更新
minimum length of substring
时,因为上面
right
指针已经
+ 1
,判断与更新时使用
right – left
即可。
代码
class