1. 核心思路
滑动窗口是解决子串问题的常用技巧。对于寻找字母异位词,关键在于维护一个固定长度的窗口,并高效判断窗口内的字符组成是否与目标字符串一致。
class Solution {
public:
vector<int> findAnagrams(string s, string p) {
vector<int> result;
if (s.empty() || p.empty() || s.size() < p.size()) return result;
int len = p.size();
vector<int> hash(26, 0);
for (char c : p) hash[c - 'a']++;
int count = 0; // 统计有效字符数
for (int i = 0; i < len; ++i) {
if (hash[s[i] - 'a'] > 0) count++;
hash[s[i] - 'a']--;
}
if (count == len) result.push_back(0);
for (int i = len; i < s.size(); ++i) {
(hash[s[i - len] - ] >= ) count--;
hash[s[i - len] - ]++;
(hash[s[i] - ] > ) count++;
hash[s[i] - ]--;
(count == len) result.(i - len + );
}
result;
}
};







