用滑動窗口, 然後比加總的陣列是否相等即可
class Solution {
public:
vector<int> findAnagrams(string s, string p) {
if (s.empty()) return {};
if(p.size() > s.size()) return {};
vector<int> p_table(26, 0);
vector<int> s_table(26, 0);
for(int i = 0; i < p.size();i++){
p_table[p[i] - 'a']++;
s_table[s[i] - 'a']++;
}
vector<int> res;
if(p_table == s_table) res.push_back(0);
for(int i = 1; i <= s.size() - p.size();i++){
s_table[s[i-1] -'a']--;
s_table[s[i + p.size() - 1] -'a']++;
if(p_table == s_table) res.push_back(i);
}
return res;
}
};