本文主要是介绍刷题之找到字符串所有字母异位词,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
找到字符串所有字母异位词
滑动窗口。滑动窗口大小为待比较数组的大小。
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;}
};
这篇关于刷题之找到字符串所有字母异位词的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!