LeetCode 567. 字串的排列

蒻雞Kid發表於2020-09-26

題目

給定兩個字串 s1 和 s2,寫一個函式來判斷 s2 是否包含 s1 的排列。

換句話說,第一個字串的排列之一是第二個字串的子串。

示例1:

輸入: s1 = “ab” s2 = “eidbaooo”
輸出: True
解釋: s2 包含 s1 的排列之一 (“ba”).

示例2:

輸入: s1= “ab” s2 = “eidboaoo”
輸出: False

注意:

輸入的字串只包含小寫字母
兩個字串的長度都在 [1, 10,000] 之間

思路

最開始使用的是全排列,然後比較的時候發現T了,然後就想到用排序的方式,emmmm又T了。 最後想到用滑動視窗 然後A了
每次取 s1 長度的視窗 然後排序比較,相等就返回True

程式碼

class Solution(object):
    def checkInclusion(self, s1, s2):
        """
        :type s1: str
        :type s2: str
        :rtype: bool
        """
        l1,l2 = len(s1),len(s2)
        s1 = sorted(s1)
        for i in range(l2-l1+1):
            t = s2[i:i+l1]
            if sorted(t) == s1:
                return True
        return False

相關文章