567.字符串的排列
因为只有小写字母,所以用长度为26的数组保存各个字母的数量很方便
class Solution {
public:
bool checkInclusion(string s1, string s2) {
//滑动窗口,窗口长度为s1的长度
vector<int>cnt1(26),cnt2(26);//保存s1,s2中各个字母的数量
if(s1.size()>s2.size())return false;
for(int i=0;i<s1.size();i++){
cnt1[s1[i]-'a']++;
cnt2[s2[i]-'a']++;
}
if(cnt1==cnt2)return true;
for(int i=s1.size();i<s2.size();i++){
cnt2[s2[i]-'a']++;
cnt2[s2[i-s1.size()]-'a']--;
if(cnt1==cnt2)return true;
}
return false;
}
};