cstring判断是否包含子串_76. 最小覆盖子串

  • Post author:
  • Post category:其他


8a92276790c42f57eef35f845e4b5a9f.gif

给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字符的最小子串。


示例:

输入: S = "ADOBECODEBANC", T = "ABC"
输出: "BANC"


说明:

1. 如果 S 中不存这样的子串,则返回空字符串 “”。

2. 如果 S 中存在这样的子串,我们保证它是唯一的答案。


解题思路

  1. Use two pointers: start and end to represent a window.
  2. Move end to find a valid window.
  3. When a valid window is found, move start to find a smaller window.


notice


  1. 因为字符可以重复,收缩窗口时需要根据window里面的字符出现频数是否与needs里面字符频数一致去更新count。
  2. 在更新

    minimum length of substring

    时,因为上面

    right

    指针已经

    + 1

    ,判断与更新时使用

    right – left

    即可。


代码

class