File tree Expand file tree Collapse file tree
longest-substring-without-repeating-characters Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ """
2+ # Approach
3+ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ๋ฅผ ์ฌ์ฉํ๋ค.
4+ right ํฌ์ธํฐ๋ฅผ ํ๋์ฉ ์ด๋์ํค๋ฉด์ ๋ฌธ์์ด์ ํ์ฅํ๊ณ ,
5+ ์ด๋ฏธ ๋ฑ์ฅํ ๋ฌธ์๋ฅผ ๋ง๋๋ฉด ํด๋น ๋ฌธ์์ ๋ง์ง๋ง ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก left ํฌ์ธํฐ๋ฅผ ์ด๋์์ผ ์ค๋ณต์ด ์๋ ๊ตฌ๊ฐ์ ์ ์งํ๋ค.
6+ ๊ฐ ๋จ๊ณ์์ ํ์ฌ ์๋์ฐ์ ๊ธธ์ด๋ฅผ ๊ณ์ฐํ์ฌ ์ต๋๊ฐ์ ๊ฐฑ์ ํ๋ค.
7+
8+ # Complexity
9+ ๋ฌธ์์ด ๊ธธ์ด๋ฅผ N์ด๋ผ๊ณ ํ ๋, ๋ฌธ์ ์ข
๋ฅ ์๋ฅผ K๋ผ๊ณ ํ ๋
10+ - Time complexity: O(N)
11+ - Space complexity: O(K)
12+ """
13+
14+
15+ class Solution :
16+ def lengthOfLongestSubstring (self , s : str ) -> int :
17+ last_seen = {} # ๋ฌธ์ -> ๋ง์ง๋ง์ผ๋ก ๋ฑ์ฅํ ์ธ๋ฑ์ค
18+ left = 0 # ํ์ฌ ์๋์ฐ์ ์์ ์์น
19+ answer = 0 # ์ต๋ ๊ธธ์ด ์ ์ฅ
20+
21+ for right , ch in enumerate (s ):
22+ # ํ์ฌ ๋ฌธ์๊ฐ ์ด์ ์ ๋ฑ์ฅํ๊ณ ,
23+ # ๊ทธ ์์น๊ฐ ํ์ฌ ์๋์ฐ ์์ ์๋ค๋ฉด left ์ด๋
24+ if ch in last_seen and last_seen [ch ] >= left :
25+ left = last_seen [ch ] + 1
26+
27+ # ํ์ฌ ๋ฌธ์์ ๋ง์ง๋ง ์์น ๊ฐฑ์
28+ last_seen [ch ] = right
29+
30+ # ํ์ฌ ์๋์ฐ ๊ธธ์ด ๊ณ์ฐ ๋ฐ ์ต๋๊ฐ ๊ฐฑ์
31+ answer = max (answer , right - left + 1 )
32+
33+ return answer
You canโt perform that action at this time.
0 commit comments