https://leetcode.com/problems/longest-substring-without-repeating-characters/
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
substring = ""
maxcount = 0
for char in s:
if char not in substring:
substring += char
else:
maxcount = max(len(substring), maxcount)
idx = substring.index(char)
substring = substring[idx+1:]+char
return max(len(substring), maxcount)
substring
을 만든다. s
안에 알파벳 char
을 한개씩 for loop를 통해 확인한다.substring
안에 지금 보고있는 알파벳 char
가 없다면 substring
에 붙여준다.substring
안에 지금 보고있는 알파벳 char
가 있다면 지금까지 이어온substring
의 길이와 maxcount
중에서 더 큰 길이를 maxcount
로 업데이트한다.
substring
안에 지금 보고있는char
이 이미 있는 상황이기 때문에 그 char
다음부터 substring
을 이어주어야한다.
그러기 위해서는 idx
변수에 substring
안에 이미 있던 char
의 인덱스를 저장해준다.
substring
을 idx
+1 부터 이어주고, 끝에 지금 for loop에서 보던 char
를 붙인다.
len(substring)
와 maxcount
중에서 더 큰 값, 즉 제일 긴 substring의 길이를 리턴한다. 알고리즘 너무 어렵다. 흑흑...