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`
Fixed-Size Sliding Window
A permutation of `s1` must have the exact same length as `s1` and the same character frequencies. We maintain a count of characters for `s1` and a sliding window of length `len(s1)` over `s2`. We update the window's character counts as it moves and check for a match at each step.