Advertisement

LeetCode 76 最小覆盖子串

阅读量:
在这里插入图片描述

心路历程解析

最初认为这道题需要借助动态规划的方法来解决,但考虑到题目要求返回的是最短子串本身而非长度,因此在对字符串s进行建模时,至少需要同时跟踪i和j两个变量。此外,该问题缺乏明显的递推关系,使得动态规划的适用性受到限制。

这道题属于滑动窗口双指针的经典应用场景。
a. 关于fast指针的移动规则:其应持续向右移动,直至当前窗口内包含t中的所有元素。
b. slow指针的更新机制:同样向右移动,直到窗口内的元素恰好满足t中元素的要求。
c. slow指针触发fast指针下一次更新的方式:在slow指针的基础上再向前移动一位,从而使得当前窗口不再满足fast停止时的条件,并在此基础上使fast指针向前推进一位。

以上三个步骤需不断重复执行,直至fast或slow指针到达字符串末尾为止。

双指针方法的关键仍在于如何在while循环结构中明确界定两个指针的更新逻辑。

注意的点:

1、此问题的关键点在于对边界条件的处理,必须确保fast指针停留在恰好符合要求的位置,之后再由slow指针推动fast指针进行后续操作。
2、应清晰界定fa

全部评论 (0)

还没有任何评论哟~