Guest User

Untitled

a guest
Apr 22nd, 2020
136
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <ext/pb_ds/assoc_container.hpp>
  2. using namespace __gnu_pbds;
  3.  
  4. int checker(string a, string b)
  5. {
  6.     gp_hash_table<int,int> cntA, cntB;
  7.     for(auto i:a)
  8.         cntA[i]++;
  9.     for(auto i:b)
  10.         cntB[i]++;
  11.     int n = cntA['?'];
  12.     for(auto i:cntB)
  13.     {
  14.         if(cntA[i.first] > i.second)
  15.             return 0;
  16.         if(cntA[i.first] < i.second)
  17.         {
  18.             int miss = i.second - cntA[i.first];
  19.             if(n < miss)
  20.                 return 0;
  21.             n-=miss;
  22.         }
  23.     }
  24.     return 1;
  25. }
  26. int countAnagram(std::string s, std::string p)
  27. {
  28.     if(p.size() > s.size())
  29.         return 0;
  30.     int cnt = 0;
  31.     for(int i = 0;i<=s.size() - p.size();i++)
  32.     {
  33.         string tmp = s.substr(i, int(p.size()));
  34.         cnt+= checker(tmp, p);
  35.     }
  36.     return cnt;
  37. }
RAW Paste Data