【在 x********g 的大作中提到】 : 这道题真的easy吗? : 438. Find All Anagrams in a String
n*4
5 楼
class Solution { public: vector findAnagrams(string s, string p) { int m = s.length(); int n = p.length(); vector res;
if (mreturn res; if (m==0 ||n==0) return res;
unordered_map countMap; unordered_set usedChars;
for (auto ch:p){ countMap[ch]++; usedChars.insert(ch); }
int left=0; int right;
int count=0;
for (right=0;rightif (!usedChars.count(s[right])){ continue; } countMap[s[right]]--; if (countMap[s[right]]>=0) count++; while (count==n) { if (right-left+1==p.length()) { res.push_back(left); } if (usedChars.count(s[left])){ countMap[s[left]]++; if (countMap[s[left]]>0) count--; } left++; } }