https://leetcode.com/problems/longest-substring-without-repeating-characters/
가장 긴 문자열을 찾는 문제
처음부터 끝까지 문자열을 스캔하면서 dictionary에 각 문자가 등장한 index를 저장하면서 가장 긴 문자열의 길이를 저장해나가는 방식
이미 등장한 문자가 또 등장했을 경우, 문자열의 시작 위치를 이전 문자열의 등장 idx와 현재 들고 있던(다른 문자들에 의한) idx와 비교하여 큰 쪽으로 설정
class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
buf = {}
answer = 0
now = 0
start = 0
for idx, elem in enumerate(s):
if elem in buf:
start = max(buf[elem] + 1, start) # 다른 문자에 의한 start와 현재 문자의 start중 큰값
now = idx - start +1
else:
now+=1
answer = max(answer, now)
buf[elem] = idx
return answer