# 最小覆盖子串

<p>给你一个字符串 <code>s</code> 、一个字符串 <code>t</code> 。返回 <code>s</code> 中涵盖 <code>t</code> 所有字符的最小子串。如果 <code>s</code> 中不存在涵盖 <code>t</code> 所有字符的子串，则返回空字符串 <code>""</code> 。</p><p><strong>注意：</strong>如果 <code>s</code> 中存在这样的子串，我们保证它是唯一的答案。</p><p> </p><p><strong>示例 1：</strong></p><pre><strong>输入：</strong>s = "ADOBECODEBANC", t = "ABC"<strong><br />输出：</strong>"BANC"</pre><p><strong>示例 2：</strong></p><pre><strong>输入：</strong>s = "a", t = "a"<strong><br />输出：</strong>"a"</pre><p> </p><p><strong>提示：</strong></p><ul>	<li><code>1 <= s.length, t.length <= 10<sup>5</sup></code></li>	<li><code>s</code> 和 <code>t</code> 由英文字母组成</li></ul><p> </p><strong>进阶：</strong>你能设计一个在 <code>o(n)</code> 时间内解决此问题的算法吗？

以下程序实现了这一功能，请你填补空白处的内容：

```cpp
#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
	string minWindow(string s, string t)
	{
		vector<int> count(128);
		for (char c : t)
		{
			count[c]++;
		}
		int l = 0, r = 0;
		int need_to_meet = t.length();
		int start, min_len = INT_MAX;
		while (r < s.length())
		{
			if (--count[s[r++]] >= 0)
			{
				need_to_meet--;
			}
			while (need_to_meet == 0)
			{
				if (r - l < min_len)
				{
					start = l;
					min_len = r - l;
				}
				___________________;
			}
		}
		return min_len == INT_MAX ? "" : s.substr(start, min_len);
	}
};
```

## template

```cpp
#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
	string minWindow(string s, string t)
	{
		vector<int> count(128);
		for (char c : t)
		{
			count[c]++;
		}
		int l = 0, r = 0;
		int need_to_meet = t.length();
		int start, min_len = INT_MAX;
		while (r < s.length())
		{
			if (--count[s[r++]] >= 0)
			{
				need_to_meet--;
			}
			while (need_to_meet == 0)
			{
				if (r - l < min_len)
				{
					start = l;
					min_len = r - l;
				}
				if (++count[s[l++]] > 0)
				{
					need_to_meet++;
				}
			}
		}
		return min_len == INT_MAX ? "" : s.substr(start, min_len);
	}
};
```

## 答案

```cpp
if (++count[s[l++]] > 0)
{
	need_to_meet++;
}
```

## 选项

### A

```cpp
if (count[s[l++]] > 0)
{
	need_to_meet++;
}
```

### B

```cpp
if (count[s[l++]] >= 0)
{
	need_to_meet++;
}
```

### C

```cpp
if (++count[s[l++]++] > 0)
{
	need_to_meet++;
}
```