Description
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 <= 104
s1
ands2
consist of lowercase English letters.
Solution
Python3
class Solution:
def checkInclusion(self, s1: str, s2: str) -> bool:
mp = collections.Counter(s1)
i = 0
for j, x in enumerate(s2):
mp[x] -= 1
while mp[x] < 0:
mp[s2[i]] += 1
i += 1
if j - i + 1 == len(s1):
return True
return False