思路:滑动窗口
class Solution {
public:
vector<int> findAnagrams(string s, string p) {
int sl = s.size(),pl = p.size();
vector<int> res;
if(sl < pl){
return res;
}
vector<int> scont(26);
vector<int> pcont(26);
for(int i=0;i<pl;i++){//先计数0-pl的字符
scont[s[i]-'a']++;
pcont[p[i]-'a']++;
}
if(scont == pcont){
res.push_back(0);
}
for(int i = 0;i<sl - pl;i++){
scont[s[i]-'a']--;//剔除前一个字符s[i]的计数
scont[s[i+pl]-'a']++;//添加字符s[i+pl]的计数
if(scont == pcont){
res.push_back(i+1);//此时i是被剔除的最后一个元素,下一个第一个元素位置为i+1
}
}
return res;
}
};