3. Longest Substring Without Repeating Characters

김석민·2022년 2월 15일
0

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

0개의 댓글