Menu
CoddyTech

Minimum Window Substring

두 문자열 s와 t가 주어집니다. 반복 횟수까지 고려하여 t의 모든 문자를 포함하는 s의 가장 짧은 부분 문자열을 찾으세요. t에 어떤 문자가 두 번 있으면 부분 문자열에도 그 문자가 최소 두 번 있어야 합니다. 순서는 상관없으며 다른 문자가 포함되어도 됩니다.

가장 짧은 부분 문자열이 여러 개라면 가장 왼쪽에 있는 것을 반환하세요. t의 모든 문자를 포함하는 부분 문자열이 없으면 빈 문자열을 반환하세요.

함수

minWindow(s: string, t: string) → string
sstring
검색할 문자열
tstring
창에 포함되어야 하는 문자들(중복 포함)
반환값string
s의 모든 t를 포함하는 부분 문자열 중 가장 짧은 것, 그다음으로 가장 왼쪽에 있는 것, 또는 빈 문자열

제약 조건

  • 1 ≤ s.length ≤ 5 × 104
  • 1 ≤ t.length ≤ 104
  • s와 t에는 영어 알파벳 문자만 들어 있습니다. 대문자와 소문자는 서로 다른 문자입니다.
  • 최단 부분 문자열이 여러 개라면 가장 왼쪽에 있는 것이 답입니다. 그런 부분 문자열이 없으면 ""입니다.

예제

입력
s = "mappingtheplan"t = "nap"
출력
"plan"
설명
왼쪽에서부터 n, a, p를 포함하는 첫 번째 구간은 appin으로, 다섯 글자입니다. plan에는 네 글자 안에 세 글자가 모두 들어 있으며, 세 글자 연속 구간 중에는 세 글자가 모두 들어 있는 구간이 없습니다.
challenge icon

후속 질문

t의 글자 수가 적고 s가 길면, s의 대부분은 전혀 중요하지 않습니다. t의 글자가 있는 위치 사이에서만 창이 이동하도록 만들 수 있나요?

코드 초기화
def minWindow(s, t):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자들

s = "mappingtheplan"
t = "nap"

예상 출력

"plan"