Waifu2x-Extension-GUI v2.71.01-beta 已經發布,機器學習多媒體處理應用
阿新 • • 發佈:2021-02-03
567. 字串的排列
難度 中等
給定兩個字串s1和s2,寫一個函式來判斷s2是否包含s1的排列。換句話說,第一個字串的排列之一是第二個字串的子串。
這道題其實就是從s2中選取與s1等長的字串(如果長度都不相同, 那麼無論s1無論怎麼組合都不成的), 然後判斷其中的資料統計結果是不是一樣, 應該算是比較簡單的題,
我首先想到的就是將統計結果存到一個字典當中, 這裡容易忽略的一點就是當字典中某個鍵的值為0的時候是需要刪除這個鍵的
第一版程式碼
class Solution: def checkInclusion(self, s1, s2): size1 = len(s1) size2 = len(s2) if size1 > size2: return False d1 = {} for ch in s1: d1[ch] = d1.get(ch, 0) + 1 left = 0 right = size1 - 1 d2 = {} for ch in s2[:size1]: d2[ch] = d2.get(ch, 0) + 1 if d1 == d2: return True right += 1 while right < size2: d2[s2[right]] = d2.get(s2[right], 0) + 1 d2[s2[left]] = d2.get(s2[left]) - 1 if d2[s2[left]] == 0: del d2[s2[left]] if d1 == d2: return True left += 1 right += 1 return False