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
Note:
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 n1=s1.length(),n2=s2.length();
if(n2<n1) return false;
if(n1==0) return true;
int i=0,j=0;
vector<int> v1(26),v2(26);
for(i=0;i<n1;++i){
v1[s1[i]-'a']++;
v2[s2[i]-'a']++;
}
if(v1==v2) return true;
for(j=n1;j<n2;++j){
v2[s2[j-n1]-'a']--;
v2[s2[j]-'a']++;
if(v1==v2) return true;
}
return false;
}
};