要小心有插入過但又歸零的key
跟從沒插入過是不等價的
所以要檢查是否有在pattern字串裡
才能插入std::unordered_map
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | class Solution { public: vector<int> findAnagrams(string s, string p) { if (p.size() > s.size()) return vector<int>(); unordered_map<char, int> patMap; unordered_map<char, int> curMap; vector<int> ans; for (int i = 0; i < p.size(); i++) patMap[p[i]]++; for (int i = 0; i < p.size(); i++) if (patMap.count(s[i])) curMap[s[i]]++; if (patMap == curMap) ans.push_back(0); for (int left = 0, right = p.size(); right < s.size(); left++, right++) { if (patMap.count(s[left])) curMap[s[left]]--; if (patMap.count(s[right])) curMap[s[right]]++; if (curMap == patMap) ans.push_back(left + 1); } return ans; } }; |