Skip to content
Leetcode
Esc
↑↓navigate↵open⌘Jpreview
On this page

567. Permutation in String

Given two strings s1 and s2, return true if s2 contains a permutation of s1, or false otherwise

Hash Table

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.

Approach

Solution

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

Explanation

Last updated on September 24, 2026

Was this page helpful?