这个题目的有些类似实现 strStr 这个算法题目。
解题关键点:
1.采用类似滑动窗口的算法遍历字符串s。
2.用两个哈希表保存字符串s和字符串p,中每个小写字母出现的次数。
C++代码:
class Solution { public: bool equals(vector<int>& sc, vector<int>& pc) { for (int i = 0; i < sc.size(); i++) { if (sc[i] != pc[i]) return false; } return true; } public: vector<int> findAnagrams(string s, string p) { vector<int> result; if (s.size() == 0 || p.size() == 0 || s.size()<p.size()) return result; vector<int> sc(26,0); vector<int> pc(26,0); int pLen = p.size(); int sLen = s.size(); for (int i = 0; i < pLen; i++) { sc[s[i] - 'a']++; pc[p[i] - 'a']++; } if (equals(sc, pc)) result.push_back(0); for (int i = pLen; i < sLen; i++) { sc[s[i] - 'a']++; sc[s[i - pLen] - 'a']--; if (equals(sc, pc)) result.push_back(i-pLen+1); } return result; } };
标签:++,异位,pc,int,vector,438,sc,leetcode,size From: https://www.cnblogs.com/repinkply/p/18015488