AM 647. Find All Anagrams in a String
class Solution {
public:
/**
* @param s: a string
* @param p: a string
* @return: a list of index
*/
vector<int> findAnagrams(string &s, string &p) {
// write your code here
vector<int> res;
vector<int> as(26, 0);
vector<int> ap(26, 0);
const int sizeS = s.size();
const int sizeP = p.size();
if(sizeS < sizeP){
return res;
}
for(int i = 0; i < sizeP; i++){
as[s[i] - 'a']++;
ap[p[i] - 'a']++;
}
if(as == ap){
res.push_back(0);
}
for(int i = sizeP; i < sizeS; i++){
as[s[i] - 'a']++;
as[s[i - sizeP] - 'a']--;
if(as == ap){
res.push_back(i - sizeP + 1);
}
}
return res;
}
};
Comments
Post a Comment