class Solution {
public:
vector<int> findAnagrams(string s, string p) {
int slen=s.length();
int plen=p.length();
int i=0;
vector<int>nums;
vector<int>s_count(27,0);
vector<int>p_count(27,0);
if(slen<plen) return nums;
for(i=0;i<plen;i++){
s_count[s[i]-'a'] +=1;
p_count[p[i]-'a'] +=1;
}
if(s_count==p_count) nums.push_back(0);//vector里元素一样,顺序不管,也能判断相等
for(i=plen;i<slen;i++){
s_count[s[i-plen]-'a']-=1; //滑动窗口
s_count[s[i]-'a']+=1; //滑动窗口
if(s_count==p_count) nums.push_back(i-plen+1);
}
return nums;
}
};
leetcode438+Find All Anagrams in a String+滑动窗口
最新推荐文章于 2024-11-01 15:19:21 发布