leetcode刷題python之最小覆蓋子串

2021-09-29 08:56:05 字數 978 閱讀 4382

題目:給你乙個字串 s、乙個字串 t,請在字串 s 裡面找出:包含 t 所有字母的最小子串。

示例:輸入: s = 「adobecodebanc」, t = 「abc」

輸出: 「banc」

學到了(之前沒記住又遇到了)新函式:

counter()可以直接把字串變成字元(別的也行)的結合;

all()判斷列表有沒有空字串或者0,有則返回false,無則true

map()以乙個列表為基礎,經過函式運算,得到新的列表

思路:通過使用雙指標來製造滑動視窗,進而對視窗裡的內容進行判斷,對於字串的題目非常方便

class solution:

def minwindow(self, s: str, t: str) -> str:

from collections import counter

t_set = counter(t)

lookup = counter()

start = 0

end = 0

min_len = float("inf")

res = ""

while end < len(s):

lookup[s[end]] += 1

end += 1

while all(map(lambda x : lookup[x] >= t_set[x] , t_set.keys())):

if end - start < min_len:

min_len = end - start

res = s[start: end] # 不使用end+1是因為end已經+=1了

print(min_len,res)

lookup[s[start]] -= 1

start += 1 # 這一步必須放在下一步之後,否則pop出了不恰當的字元

print(start)

return res

Leetcode鍊錶刷題 pytho語言

為方便後續的使用查詢,記錄一下 函式包括 找到兩個單鏈表相交的起始節點 反轉單鏈表 刪除鍊錶中等於給定值 val 的所有節點 definition for singly linked list.class listnode object def init self,x self.val x self...

開始刷題LeetCode

今天決定開始刷題,每天至少一題,如果題目確實沒有解決出來沒有關係,但是要保證每天至少接觸了一道新的題目!一定要堅持下去,現在是個菜鳥可能會感覺有點難度,堅持下去,總有一天會好的!今天是第一天,做的第乙個題目 reverse words in a string given an input strin...

leetcode刷題歷程

難度 簡單 題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 ...