class Solution {
public:
bool equals(const vector<int> &a, const vector<int> &b) {
int l = a.size();
for (int i = 0; i < l; i++) {
if (a[i] != b[i]) {
return false;
}
}
return true;
}
vector<int> findAnagrams(string& s, string& p) {
vector<int> ans;
vector<int> cnt(256, 0), cntP(256, 0);
if (s.size() < p.size()) {
return ans;
}
for (int i = 0; i < p.size(); i++) {
cnt[s[i]]++;
cntP[p[i]]++;
}
if (equals(cnt, cntP)) {
ans.push_back(0);
}
for (int i = p.size(); i < s.size(); i++) {
cnt[s[i]]++;
cnt[s[i - p.size()]]--;
if (equals(cnt, cntP)) {
ans.push_back(i - p.size() + 1);
}
}
return ans;
}
};