Skip to content

Instantly share code, notes, and snippets.

@olegon
Created February 17, 2024 19:09
Show Gist options
  • Save olegon/067c1b9fc4a86ac570fc3b0b10bc5fa9 to your computer and use it in GitHub Desktop.
Save olegon/067c1b9fc4a86ac570fc3b0b10bc5fa9 to your computer and use it in GitHub Desktop.
class Solution {
public:
vector<int> findAnagrams(string s, string p) {
vector<int> result;
unordered_map<char, int> charToFreqP;
unordered_map<char, int> charToFreqS;
int k = p.size();
for (char c = 'a'; c <= 'z'; c++) {
charToFreqS[c] = 0;
charToFreqP[c] = 0;
}
for (char c : p) charToFreqP[c]++;
for (int i = 0; i < k; i++) {
charToFreqS[s[i]]++;
if (charToFreqP == charToFreqS) result.push_back(0);
}
for (int i = k; i < s.size(); i++) {
charToFreqS[s[i]]++;
charToFreqS[s[i - k]]--;
if (charToFreqP == charToFreqS) result.push_back(i - k + 1);
}
return result;
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment