class Solution {
public:
vector<int> findAnagrams(string s, string p) {
vector<int> ret;
int s_size = s.size();
int p_size = p.size();
if(s_size < p_size) return ret;
vector<int> s_hash(26);
vector<int> p_hash(26);
for(int i = 0; i < p_size; i++){
s_hash[s[i] - 'a']++;
p_hash[p[i] - 'a']++;
}
if(s_hash == p_hash) ret.push_back(0);
int left = 0;
for(int i = 1; i <= s_size - p_size; i++){
s_hash[s[left] - 'a']--;
left++;
s_hash[s[i - 1 + p_size] - 'a']++;
if(s_hash == p_hash) ret.push_back(i);
}
return ret;
}
};