--- title: '567. Permutation in String' description: Given two strings s1 and s2, return true if s2 contains a permutation of s1, or false otherwise sidebar: label: 'Permutation in String' badge: 'Medium' --- Sliding Window ### 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: - `1 <= s1.length, s2.length <= 10^4` - `s1` and `s2` consist of lowercase English letters. ## Solution ```py from collections import Counter class Solution: def checkInclusion(self, s1: str, s2: str) -> bool: k = len(s1) if k > len(s2): return False need = Counter(s1) window = Counter() for right, c in enumerate(s2): window[c] += 1 if right >= k: left_char = s2[right - k] window[left_char] -= 1 if window[left_char] == 0: del window[left_char] if window == need: return True return False ```