less than 1 minute read

3. Longest Substring Without Repeating Characters

문제 링크

https://leetcode.com/problems/longest-substring-without-repeating-characters/description/

문제 설명

Given a string s, find the length of the longest substring without repeating characters.

제한 사항

  • 0 <= s.length <= 5 * 10^4
  • s consists of English letters, digits, symbols and spaces.

입출력 예 #1

  1. Input : s = “abcabcbb”
  2. Output : 3
  3. Explanation : The answer is “abc”, with the length of 3.

입출력 예 #2

  1. Input : s = “bbbbb”
  2. Output : 1
  3. Explanation : The answer is “b”, with the length of 1.

입출력 예 #3

  1. Input : s = “pwwkew”
  2. Output : 3
  3. Explanation : The answer is “wke”, with the length of 3. Notice that the answer must be a substring, “pwke” is a subsequence and not a substring.
class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        used = {}
        max_length = start = 0

        for index, char in enumerate(s):

            # 이미 등장했던 문자라면 'start' 위치 갱신
            if char in used and start <= used[char] :
                start = used[char] + 1

            # 최대 부분 문자열 길이 갱신
            else :
                max_length = max(max_length, index - start + 1)

            # 현재 문자의 위치 삽입
            used[char] = index

        return max_length

Comments