class Solution{// review 438 O(N) O(1)
public:
vector<int> findAnagrams(string s, string p){
int n=s.size(),m=p.size();if(m>n)return{};
int cnt[26]={},need=m;for (char c:p)++cnt[c-'a'];
vector<int>ans;
for(int r=0; r<n;++r){
if(cnt[s[r]-'a']-->0)--need;
if(r>=m && cnt[s[r-m]-'a']++>=0)++need;
if(!need)ans.push_back(r-m+1);
}
return ans;
}
};