Menu
CoddyTech

Minimum Window Substring

두 문자열 s와 t가 주어집니다. t의 모든 문자를 포함하는 s의 가장 짧은 부분 문자열, 즉 연속된 문자들의 구간을 찾으세요. 문자의 반복 횟수도 셉니다. t에 어떤 문자가 두 번 있으면 부분 문자열에도 그 문자가 최소 두 번 있어야 합니다. 문자의 순서는 중요하지 않으며, 부분 문자열에는 다른 문자가 포함되어도 됩니다.

가장 짧은 길이의 부분 문자열이 여러 개라면 가장 왼쪽에 있는 것을 반환하세요. s의 어떤 부분 문자열도 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은 네 글자 안에 세 글자를 모두 포함하며, 세 글자로 이루어진 어떤 구간도 세 글자를 모두 포함하지 않습니다.

lock icon제출 시 숨은 테스트 +17개

challenge icon

후속 질문

t가 몇 개의 문자만 사용하고 s가 길다면, s의 대부분은 절대 중요하지 않을 수 있습니다. t의 문자가 있는 위치 사이에서만 윈도우가 이동하도록 만들 수 있나요?

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

케이스 1

케이스 2

케이스 3

입력

s = "mappingtheplan"
t = "nap"

기대값

"plan"