Count Occurrences Of Anagrams | Sliding Window
Count Occurrences Of Anagrams
Sliding Window
#include <bits/stdc++.h>
using namespace std;
int countAnagrams(string s,string pat){
int ans=0;
int n = s.size();
int patSize = pat.size();
if(patSize>n)
return 0;
unordered_map<char,int> freq;
for(int i=0;i<patSize;i++){
freq[pat[i]]++;
}
int uniqueChar=freq.size();
int start=0,end=0;
while(end<n){
if(freq.find(s[end])!=freq.end()){
freq[s[end]]--;
if(freq[s[end]] == 0)
uniqueChar--;
}
if(end-start+1 < patSize){
end++;
continue;
}
if(uniqueChar==0){
ans++;
}
if(freq.find(s[start])!=freq.end()){
freq[s[start]]++;
if(freq[s[start]] == 1)
uniqueChar++;
}
start++;
end++;
}
return ans;
}
int main() {
string s;
cin>>s;
string pat;
cin>>pat;
cout<<countAnagrams(s,pat);
return 0;
}