试想有这样一道题, 怎么解决?
题目描述:
给定两个字符串s和t, 找到s中包含所有t中字母的最短字符串组合。
举例:
输入: S = “ADOBECODEBANC”, T = "ABC"
输出: “BANC”
这个时候就要用到滑动窗口算法,滑动窗口算法广泛应用于网络协议等,其实滑动窗口算法是一种思路,可以解决很多问题。
下面详细讲解下这个算法的步骤:
- 设定两个指针,left和right,表示一个滑动的窗口之最左端和最右端。
初始,这两个指针指向S的第一个字符 - left不动,right来向右移动,直到找到一个字符串能匹配T串,便是当前能match的字符串。
- 这个时候,我们一个一个的右移动left,同时每右移动一次left,我们再通过右移动right来找match的字符串,如果能找到,且比当前串短,update。如果找不到,继续右移动left。
下面举例说明一下:
-
left=0, right=0;ADOBECODEBANC
-
移动right, 找到第一个match的字符串:
-
右移动left一步,一直移动right,找到match字符串,但是更长,不更新,
-
继续右移动left一位,
-
最后找到了最短字符串BANC
同样的思路可以解决如下问题:
A. 给定一个字符串s和一个非空字符串p,在s中找到p字谜的所有开始索引。
s: “cbaebabacd” p: “abc” 输出[0,6]
B. 给定一个字符串,查找不重复字符的最长子字符串的长度。
left=0,right=0;
欢迎留言交流!
点击查看更多内容
1人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦