算法思路:用滑动窗口找到包含 t 所有字符的最小子串
1. 初始化:need 存储 t 中每个字符需要的数量,window 存储当前窗口中字符的实际计数
2. 扩展窗口(右指针右移):每移动一次,将新字符加入 window。如果该字符在 need 中且数量满足需求,formed 加 1
3. 收缩窗口(左指针右移):当 formed == required(即窗口覆盖了 t 的所有字符)时,尝试收缩窗口寻找更优解
4. 更新结果:每次收缩前检查当前窗口是否比之前找到的解更短,如果是则更新结果
时间复杂度:O(n + m),空间复杂度:O(m),其中 m 为字符集大小