题目
题解
- 固定的滑动窗口
- 遇到字母,考虑26位的数组,通过scnt==pcnt判断,两个字符串是否含有相同的字母
- 进一位,出一位的思想
代码
class Solution{
public:
vector<int> findAnagrams(string s, string p){
int m=s.size();
int n=p.size();
vector<int> res;
if(m<n) return res;
vector<int> scnt(26);
vector<int> pcnt(26);
for(int i=0;i<n;i++){
scnt[s[i]-'a']++;
pcnt[p[i]-'a']++;
}
if(scnt==pcnt) res.push_back(0);
for(int i=n;i<m;i++){
scnt[s[i]-'a']++;
scnt[s[i-n]-'a']--;
if(scnt==pcnt) res.push_back(i-n+1);
}
return res;
}
};