LeetCode 76 最小覆蓋子串

2021-10-06 10:15:49 字數 1146 閱讀 6213

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

示例:

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

輸出: 「banc」

說明:

如果 s 中不存這樣的子串,則返回空字串 「」。

如果 s 中存在這樣的子串,我們保證它是唯一的答案。

class

solution

:def

minwindow

(self, s:

str, t:

str)

->

str:

window =

tdic =

for c in t:

tdic.setdefault(c,0)

tdic[c]+=1

max =

100000

l =0 r =

0 valid =

0 ans =

0 anslen = max

while r <

len(s)

: c = s[r]

r +=

1if c in t:

window.setdefault(c,0)

window[c]+=1

if window[c]

== tdic[c]

: valid +=

1while valid ==

len(tdic)

:if r-l < anslen:

ans = l

anslen = r - l

d = s[l]

l +=

1if d in t:

if window[d]

== tdic[d]

: valid -=

1 window[d]-=1

if anslen == max:

return

""return s[ans:ans+anslen]

LeetCode76 最小覆蓋子串

給定乙個字串 s 和乙個字串 t,請在 s 中找出包含 t 所有字母的最小子串。示例 輸入 s adobecodebanc t abc 輸出 banc 說明 字串和雜湊表的問題。hashmap來儲存t字串中個字母元素的出現次數,left right記錄當前子字串的左右下標值,min minleft ...

leetcode 76 最小覆蓋子串

這道題我使用了很笨的方式花了好久解決了,但是時間複雜度太度,只看網上檢視原始碼,不得不說網上的答案基本都是一樣的,但是對於基礎相對薄弱的我來說這些 看起來很是費勁,還用要加強c 基礎的練習才行。思路相對來說不是很難 1 首先構架t字串的hash表,因為字元與ascii碼較好的關係,使用vector陣...

leetcode76 最小覆蓋子串

給定乙個字串 s 和乙個字串 t,請在 s 中找出包含 t 所有字母的最小子串。示例 輸入 s adobecodebanc t abc 輸出 banc 說明 如果 s 中不存這樣的子串,則返回空字串 如果 s 中存在這樣的子串,我們保證它是唯一的答案。典型雙指標滑動串列埠題目,先將t建dict,然後...