滑动窗口主要用来减少遍历次数,在知道所需一定范围的数据时,可通过加一减一来快速遍历。
class Solution {
public:
bool checkInclusion(string s1, string s2) {
int n=s1.size();
int t=s2.size();
vector<int>cnt1(26);
vector<int>cnt2(26);
if(t<n)
return false;
for(int i=0;i<n;i++)
{
cnt1[s1[i]-'a']++;
cnt2[s2[i]-'a']++;
}
if(cnt1==cnt2)//两个vector容器可直接判断是否相等
return true;
for(int i=n;i<t;i++)
{
cnt2[s2[i]-'a']++;
cnt2[s2[i-n]-'a']--;//应用滑动窗口算法
if(cnt1==cnt2)
return true;
}
return false;
}
};