File tree Expand file tree Collapse file tree 1 file changed +37
-0
lines changed
longest-substring-without-repeating-characters Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change
1
+ """
2
+ Constraints:
3
+ - 0 <= s.length <= 5 * 10^4
4
+ - s consists of English letters, digits, symbols and spaces.
5
+
6
+ Time Complexity: O(n)
7
+ - ๋ฌธ์์ด์ ํ๋ฒ๋ง ์ํ
8
+
9
+ Space Complexity: O(n)
10
+ - ๋์
๋๋ฆฌ์ ๋ฌธ์์ ์ธ๋ฑ์ค ์ ์ฅ
11
+
12
+ ํ์ด ๋ฐฉ๋ฒ:
13
+ 1. ์ฌ๋ผ์ด๋ฉ ์๋์ฐ์ ๋์
๋๋ฆฌ๋ฅผ ํ์ฉ
14
+ 2. seen ๋์
๋๋ฆฌ์ ๊ฐ ๋ฌธ์์ ๋ง์ง๋ง ๋ฑ์ฅ ์์น๋ฅผ ์ ์ฅ
15
+ 3. ์ค๋ณต ๋ฌธ์๋ฅผ ๋ง๋๋ฉด ์๋์ฐ์ ์์์ (current_start)์ ์ค๋ณต ๋ฌธ์ ๋ค์ ์์น๋ก ์ด๋
16
+ 4. ๋งค ๋จ๊ณ์์ ํ์ฌ ์๋์ฐ์ ๊ธธ์ด๋ฅผ ๊ณ์ฐํ๊ณ ์ต๋ ๊ธธ์ด ๊ฐฑ์
17
+ 5. ์ต์ข
์ ์ผ๋ก ๊ฐ์ฅ ๊ธด ์ค๋ณต ์๋ ๋ถ๋ถ ๋ฌธ์์ด์ ๊ธธ์ด ๋ฐํ
18
+ """
19
+
20
+ class Solution :
21
+ def lengthOfLongestSubstring (self , s : str ) -> int :
22
+ seen = {}
23
+ current_start = 0
24
+ max_length = 0
25
+
26
+ for i in range (len (s )):
27
+ char = s [i ]
28
+
29
+ if char in seen and seen [char ] >= current_start :
30
+ current_start = seen [char ] + 1
31
+
32
+ seen [char ] = i
33
+
34
+ current_length = i - current_start + 1
35
+ max_length = max (current_length , max_length )
36
+
37
+ return max_length
You canโt perform that action at this time.
0 commit comments