滑动窗口思想
思路
1、我们在字符串s中使用双指针的左右指针技巧,初始化left= right = 0;把这个索引闭区间[left,rigth]称为一【窗口】。
2、我们先不断的增加right指针扩大窗口[left,right],直到窗口中的字符串符合要求(包含T中所有的字符)
3、此时,停止增加right,转而不断增加left指针,缩小活动窗口[left,rigth],直到窗口中的字符不在符合要求(不包含T中所有的字符了)。同时,每次增加left,我们都要更新一轮结果
4、重复第二步和第三步,直到right达到字符串s的尽头。
伪代码
var s, t;
var res = '';
var left = 0,right = 0;
while(right<s.length-1){
windows.add(s[right]);
right++:
while(window符合要求){
res = minLen(res,window);
window.remove(s[left]);
left++;
}
}
return res;
详情请参考滑动窗口详解