피드로 돌아가기
LeetCode Solution: 3. Longest Substring Without Repeating Characters
Dev.toDev.to
Backend

Sliding Window와 HashSet 기반 O(N) 시간 복잡도 달성

LeetCode Solution: 3. Longest Substring Without Repeating Characters

Hommies2026년 5월 16일6beginner

Context

중복 문자가 없는 최장 부분 문자열을 찾는 문제로, 모든 부분 문자열을 전수 조사하는 Brute-force 방식 채택 시 O(N^2)의 시간 복잡도 발생. 연속된 구간을 효율적으로 탐색하며 중복을 제거하는 최적화된 윈도우 관리 구조 필요.

Technical Solution

  • Two Pointers 기반의 Sliding Window 구조를 설계하여 탐색 범위의 불필요한 중복 계산 제거
  • HashSet을 통한 현재 윈도우 내 문자 존재 여부를 O(1) 시간 복잡도로 확인하는 메커니즘 구현
  • Right Pointer를 통한 윈도우 확장을 기본 전략으로 설정하여 입력 문자열 전체를 1회 순회
  • 중복 문자 발견 시 Left Pointer를 이동시켜 중복 요소가 제거될 때까지 윈도우 크기를 축소하는 동적 제어 로직 적용
  • 매 단계에서 (Right - Left + 1) 수식을 통해 현재 유효한 최장 길이를 갱신하는 상태 관리 수행

1. 연속된 부분 구간(Contiguous Subsegment) 최적화 문제 시 Sliding Window 패턴 적용 검토

2. 구간 내 유일성(Uniqueness) 보장이 필요할 경우 Hash-based 자료구조를 통한 조회 성능 최적화

3. 윈도우 확장(Expand)과 축소(Shrink)의 트리거 조건을 명확히 정의하여 포인터 이동 로직 설계

원문 읽기