mirror of
https://github.com/prdlk/leetcode.git
synced 2026-09-17 15:36:26 +00:00
59 lines
1.3 KiB
Python
59 lines
1.3 KiB
Python
"""
|
|||
|
|
567. Permutation in String
|
||
|
|
Difficulty: Medium
|
||
|
|
https://leetcode.com/problems/permutation-in-string/
|
||
|
|
|
||
|
|
──────────────────────────────────────────────────
|
||
|
|
|
||
|
|
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
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
Constraints:
|
||
|
|
|
||
|
|
• 1 <= s1.length, s2.length <= 10^4
|
||
|
|
|
||
|
|
• s1 and s2 consist of lowercase English letters.
|
||
|
|
"""
|
||
|
|
|
||
|
|
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
|