438. 找到字符串中所有字母异位词

This commit is contained in:
2025-09-10 23:05:16 +08:00
parent 9294aed9b4
commit ab592a9f3d

29
test009.cpp Normal file
View File

@@ -0,0 +1,29 @@
class Solution {
public:
bool checkCnt(vector<int>& cnts, vector<int>& cntp){
for(int i = 0; i < 26; i++){
if(cnts[i] != cntp[i]) return false;
}
return true;
}
vector<int> findAnagrams(string s, string p) {
vector<int> cntp(26);
for(char c:p){ cntp[c-'a']++; }
vector<int> ret;
vector<int> cnts(26);
for(int i = 0; i < min(p.length(), s.length()); i++){
cnts[s[i] - 'a']++;
}
if(checkCnt(cnts, cntp)) { ret.push_back(0);}
for(int r = p.length(); r < s.length(); r++){
int l = r - p.length() + 1;
cnts[s[l-1] - 'a']--;
cnts[s[r] - 'a']++;
if(checkCnt(cnts, cntp)) { ret.push_back(l); }
}
return ret;
}
};