76 最小覆盖子串
Minimum Window Substring
题目
给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。
注意:如果 s 中存在这样的子串,我们保证它是唯一的答案。
原题目连接:Minimum Window Substring
滑动窗口算法的思路
- 我们在字符串S中使用双指针中的左右指针技巧,初始化
left = right = 0
,把索引左闭右开区间[left, right)
称为一个「窗口」。 - 我们先不断地增加
right
指针扩大窗口[left, right)
,直到窗口中的字符串符合要求(包含了T中的所有字符)。 - 此时,我们停止增加
right
,转而不断增加left指针缩小窗口[left, right)
,直到窗口中的字符串不再符合要求(不包含T中的所有字符了)。同时,每次增加left
,我们都要更新一轮结果。 - 重复第 2 和第 3 步,直到
right
到达字符串S的尽头。
代码
#include<iostream>
#include<unordered_map>
#include<string>
#include<limits.h>
using namespace std;
static string minWindow(string, string);
int main(