题目链接:https://leetcode-cn.com/problems/find-all-anagrams-in-a-string/
题目如下:
class Solution {
public:
vector<int> findAnagrams(string s, string p) {
vector<int> result;
unordered_map<int,int> umap;
for(auto e:p) umap[e]++;
int valid=0,total=umap.size();
for(int i=0,j=0;i<s.size();++i){//左边每移除一个字符就++,右边每出现一个字符就--
umap[s[i]]--;
if(umap[s[i]]==0) valid++;
while(i-j+1>p.size()){
if(umap[s[j]]==0) valid--;
umap[s[j]]++;//因为左边每移动一次,相对应的数量是+1的
j++;
}
if(valid==total) result.push_back(j);
}
return result;
}
};