Permutation in string

leetcode.cn

class Solution:
    def checkInclusion(self, s1: str, s2: str) -> bool:
        # # s1 = "ab"
        # # s2 = "eidbaooo"
        # n = len(s1)
        # m = len(s2)
        # dic1 = []
        # dic2 = []
        # if n>m: return False

        # for i in range(n): 
        #     dic1[i] = s1[i]

        # for j in range(m):
        #     for j<j+n:
        #         if s2[j] in dic1:
        #             dic2.append(s2[j])
        #     j += 1

        #     if len(dic1) == len(dic2):
        #         return True 
        # return False

        if len(s1) > len(s2): return False
        m, n = len(s1), len(s2)
        dic1 = [0]*26
        dic2 = [0]*26
        # PartI: 初始化统计窗口字母表
        for i in range(m):
            dic1[ord(s1[i])-ord("a")] += 1 # s1
            dic2[ord(s2[i])-ord("a")] += 1 # s2
        if dic1 == dic2:
                return True
        # PartII: 滑动窗口字母表更新
        for i in range(m,n):
            dic2[ord(s2[i])-ord("a")] += 1 # 进
            dic2[ord(s2[i-m])-ord("a")] -= 1 # 出
            if dic1 == dic2:
                return True
        return False