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;
    }
};