내 정답
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
exist = dict()
answer = 0
front = 0
for i, char in enumerate(s):
# 글자가 한 번 나왔던거면 계산 한 번 해줌
if char in exist:
# 길이를 재는 기준인 front를 이동시켜줌
front = max(front, exist[char] + 1)
answer = max(answer, i - front + 1)
exist[char] = i
# 처음나온거면 넣어주고 정답1 늘려줌
else:
exist[char] = i
answer = max(answer, i - front + 1)
return max(answer, len(s) - front)
교재 정답
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
exist = dict()
answer = 0
front = 0
for i, char in enumerate(s):
# 글자가 한 번 나왔던거이면서 슬라이딩 윈도우 안에 있는거여야함
if char in exist and front <= exist[char]:
# 길이를 재는 기준인 front를 앞에 나온 중복문자의 바로 다음으로 이동시켜줌
front = exist[char] + 1
print(i, char, front)
# 처음나온 글자인경우
else:
answer = max(answer, i - front + 1)
# 현재 글자 넣어줌
exist[char] = i
return answer
https://leetcode.com/problems/longest-substring-without-repeating-characters/