找到字符串所有字母异位词
滑动窗口。滑动窗口大小为待比较数组的大小。
class Solution {
public:vector<int> findAnagrams(string s, string p) {//滑动窗口vector<int>result;if(s.size()<p.size())return result;vector<int>pnum(26,0);//记录p的字母vector<int>snum(26,0);//记录滑动窗口的字母//先填满窗口for(int i=0;i<p.size();i++){snum[s[i]-'a']++;pnum[p[i]-'a']++;}//当vector里的元素是基本数据类型时,可以直接使用 "==", "!=", ">=","<=" 来对两个vector进行比较。if(pnum==snum){result.push_back(0);}//滑动窗口for(int i=0;i<s.size()-p.size();i++){snum[s[i]-'a']--;snum[s[i+p.size()]-'a']++;if(snum==pnum){result.push_back(i+1);}}return result;}
};