Description of the Problem
Given two strings s1 and s2, write a function to return true if s2 contains the permutation of s1. In other words, one of the first string's permutations is the substring of the second string.
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:
The input strings only contain lower case letters.
The length of both given strings is in range [1, 10,000].
Code
#Sliding Window Approach
from collections import Counter
class Solution:
def checkInclusion(self, s1, s2):
d1, d2 = Counter(s1), Counter(s2[:len(s1)])
for start in range(len(s1), len(s2)):
if d1 == d2: return True
d2[s2[start]] += 1
d2[s2[start-len(s1)]] -= 1
if d2[s2[start-len(s1)]] == 0:
del d2[s2[start-len(s1)]]
return d1 == d2
Link To The LeetCode Problem
https://leetcode.com/problems/permutation-in-string/