class Solution {
public:
vector<int> findAnagrams(string s, string p) {
int num[26]={0};
for(int i = 0;i < p.length(); i++)
num[p[i]-'a']++;
int f = 0;
for(int i = 0;i < 26;i++)
if(num[i] != 0)
f++;
vector<int> ans;
int length=p.length(),be = 0;
for(int i = 0;i < s.length();i++){
num[s[i]-'a']--;
if(num[s[i]-'a'] == 0)
f--;
if(be + length == i){
if(num[s[be]-'a'] == 0)
f++;
num[s[be]-'a']++;
be++;
}
//cout<<f<<endl;
if(f == 0)
ans.push_back(be);
}
return ans;
}
};438. Find All Anagrams in a String
最新推荐文章于 2025-12-06 07:43:37 发布
本文介绍了一种使用滑动窗口解决字符串中寻找指定长度异构词问题的方法。通过定义一个固定大小的窗口,在字符串上从左到右滑动,监测窗口内字符是否符合预设条件。当满足条件时,记录该窗口起始位置。此算法适用于查找字符串中的异构词等问题。
4万+

被折叠的 条评论
为什么被折叠?



