class Solution {
public:
vector<int> findAnagrams(string s, string p) {
vector<int> result;
vector<int> pf(26,0);
vector<int> sf(26,0);
int len_p=p.size();
int len_s=s.size();
for(char c:p){
pf[c-'a']++;
}
if(len_s<len_p) return result; // 先处理边界问题,边界问题放到循环外部。
// 遍历整个 s
for(int right=0;right<len_s;right++){
// 先写窗口扩张代码
sf[s[right]-'a']++;
// 再写窗口收缩条件代码
if(right>=len_p){
sf[s[right-len_p]-'a']--;
}
if(right>=len_p-1){
if(sf==pf){
result.push_back(right-len_p+1);
}
}
}
return result;
}
};
