Menu
CoddyTech

Minimum Window Substring

给定两个字符串 s 和 t。找出 s 中包含 t 的所有字符的最短子字符串,重复字符也要计入:如果 t 中某个字母出现两次,子字符串中至少也要出现两次。字符顺序不限,也可以包含其他字符。

如果有多个长度最短的子字符串,返回最靠左的那个。如果没有子字符串包含 t 中的所有字符,则返回空字符串。

函数

minWindow(s: string, t: string) → string
sstring
要搜索的字符串
tstring
窗口必须包含的字符,允许重复
返回值string
包含 t 中所有内容的 s 的最短子字符串;如果有多个,则取最靠左的那个;如果不存在,则返回空字符串

约束条件

  • 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"