File tree Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change 1+ class Solution :
2+ def minWindow (self , s : str , t : str ) -> str :
3+ # ์ฌ๋ผ์ด๋ฉ ์๋์ฐ(์๊ฐ๋ณต์ก๋ O(m+n), ๊ณต๊ฐ๋ณต์ก๋ O(n) : m=len(s), n=len(t))
4+ # ํ์ํ ๋ฌธ์ ๊ฐ์ ๋์
๋๋ฆฌ๋ก ์ ๋ฆฌ
5+ need = {}
6+ for i in t :
7+ need [i ] = need .get (i ,0 ) + 1
8+
9+ window = {} # ํ์ฌ ์๋์ฐ์ ํฌํจ๋ ๋ฌธ์ ๊ฐ์ ๋์
๋๋ฆฌ๋ก ์ ๋ฆฌ
10+ have = 0 # ์กฐ๊ฑด์ ๋ง์กฑํ ๋ฌธ์ ์
11+ need_count = len (need ) # ์กฐ๊ฑด์ ๋ง์กฑํด์ผํ๋ ๋ฌธ์ ์
12+ min_len = 100001 # ์ต์์๋์ฐ๊ธธ์ด(์ต๋๊ฐ์ ์ด๊ธฐ๊ฐ์ผ๋ก ์ค์ )
13+ answer = ""
14+ left = 0
15+
16+ # ์ค๋ฅธ์ชฝ ํฌ์ธํฐ ์ด๋
17+ for right in range (len (s )):
18+ window [s [right ]] = window .get (s [right ],0 ) + 1
19+
20+ # ํด๋น ๋ฌธ์๊ฐ ์กฐ๊ฑด์ ๋ง์กฑํ๋ค๋ฉด have += 1
21+ if s [right ] in need and window [s [right ]] == need [s [right ]]:
22+ have += 1
23+
24+ # ๋ชจ๋ ์กฐ๊ฑด ๋ง์กฑํ๋ฉด ์ผ์ชฝ ๊ณ์ ์ค์ด๊ธฐ
25+ while have == need_count :
26+ # ์ต์ ์๋์ฐ ๊ธธ์ด ๊ฐฑ์
27+ if (right - left + 1 ) < min_len :
28+ min_len = right - left + 1
29+ answer = s [left :right + 1 ]
30+
31+ # ์๋์ฐ ์ผ์ชฝ ๋ฌธ์ ์ ๊ฑฐ
32+ window [s [left ]] -= 1
33+ if s [left ] in need and window [s [left ]] < need [s [left ]]:
34+ have -= 1
35+ left += 1
36+
37+ return answer
You canโt perform that action at this time.
0 commit comments