We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 04c6c98 commit bd9abe6Copy full SHA for bd9abe6
1 file changed
longest-substring-without-repeating-characters/liza0525.py
@@ -0,0 +1,22 @@
1
+# 7기 풀이
2
+# 시간 복잡도: O(n)
3
+# - 슬라이딩 윈도우 기법을 사용, s의 길이 n에 비례
4
+# 공간 복잡도: O(min(n, k))
5
+# - 중복 문자를 저장 및 체크할 char_set의 최대 크기인 k(s의 모든 문자가 중복하지 않을 때)와 s의 크기 n 중 작은 쪽
6
+class Solution:
7
+ def lengthOfLongestSubstring(self, s: str) -> int:
8
+ max_len = 0
9
+ left = 0 # 왼쪽 포인터 지정
10
+ char_set = set() # 중복 문자 체크를 위한 set 추가
11
+
12
+ # right를 하나씩 옮겨가며 문자열 길이를 체크,
13
+ for right in range(len(s)):
14
+ while s[right] in char_set:
15
+ # 중복 문자가 생길 경우 left를 움직이되, 중복된 문자 이전의 모든 문자를 제한다.
16
+ char_set.remove(s[left])
17
+ left += 1
18
19
+ char_set.add(s[right]) # 현재의 문자인 s[right]를 char_set에 저장하여 다음 루프에 중복 체크를 하도록 한다.
20
+ max_len = max(max_len, right - left + 1) # 현재까지의 가장 긴 문자열을 계산하여 max_len 업데이트
21
22
+ return max_len
0 commit comments