diff --git a/FindAllAnagramsInAString.cpp b/FindAllAnagramsInAString.cpp new file mode 100644 index 0000000..4fa6cc4 --- /dev/null +++ b/FindAllAnagramsInAString.cpp @@ -0,0 +1,48 @@ +class Solution { +public: + vector findAnagrams(string s, string p) { + map forP; + + for(int i = 0; i < p.size(); i++){ + if(forP.find(p[i]) == forP.end()){ + forP[p[i]] = 1; + } + else{ + forP[p[i]]++; + } + } + + int start = 0, i = 0, n = s.size(); + + map m; + + vector sol; + + while(i < n){ + if(m.find(s[i]) == m.end()){ + m[s[i]] = 1; + } + else{ + m[s[i]]++; + } + + if((i - start) == p.size()){ + if(m[s[start]] == 1){ + m.erase(m.find(s[start])); + } + else{ + m[s[start]]--; + } + start++; + } + + if(m == forP){ + sol.push_back(start); + + } + i++; + } + + return sol; + } +};