题目:
Given two strings s1 and s2, write a function to return true if s2 contains the permutation of s1. In other words, one of the first string's permutations is the substring of the second string.
Example 1:
Input: s1 = "ab" s2 = "eidbaooo" Output: True Explanation: s2 contains one permutation of s1 ("ba").
Example 2:
Input:s1= "ab" s2 = "eidboaoo" Output: False
Constraints:
- The input strings only contain lower case letters.
- The length of both given strings is in range [1, 10,000].
代码:
class Solution {
public:
bool checkInclusion(string s1, string s2) {
int len1=s1.length();
int len2=s2.length();
int dict[26]={0};
for(int i=0;i<s1.size();i++){
dict[s1[i]-'a']+=1;
}
int l=0,count=0;
for(int r=0;r<len2;r++){
dict[s2[r]-'a']-=1;
if(dict[s2[r]-'a']>=0){
count+=1;
}
while(r-l+1>len1){
dict[s2[l]-'a']+=1;
if(dict[s2[l]-'a']>0)count-=1;
l+=1;
}
if(count==len1)return true;
}
return false;
}
};
想法:滑动窗口法