3. Longest Substring Without Repeating Characters

kukudas·2022년 3월 29일
0

Algorithm

목록 보기
27/46

내 정답

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/

0개의 댓글