567 - Permutation In String
#medium
Given two strings s1
and s2
, return true
if s2
contains a permutation of s1
, or false
otherwise.
In other words, return true
if one of s1
's permutations is the substring of s2
.
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
class Solution {
public:
bool checkInclusion(string s1, string s2) {
// sliding windows + hashtable, create table for s1.
vector<int> c1(26, 0);
vector<int> c2(26, 0);
for ( int i = 0; i < s1.size(); i++ ) c1[s1[i] - 'a' ]++;
for ( int i = 0; i < s2.size(); i++ ) {
if ( i >= s1.size() ) c2[s2[i-s1.size()] - 'a']--;
c2[s2[i] - 'a']++;
if ( c1 == c2 ) return true;
}
return false;
}
};