#3728. 最小覆盖子串
最小覆盖子串
最小覆盖子串
来自leetcode,是亚马逊、字节跳动和Adobe的招聘题目
题目描述
给你一个字符串 s 和一个字符串 t。请你在字符串 s 中找出涵盖 t 所有字符的最小子串。
- 对于
t中重复出现的字符,子串中该字符的数量必须不少于t中该字符的数量。 - 如果
s中不存在涵盖t所有字符的子串,则输出空字符串(即输出一个空行)。 - 如果存在这样的子串,题目保证答案唯一。
输入格式
第一行一个整数 n,表示字符串 s 的长度。
第二行一个字符串 s。
第三行一个整数 m,表示字符串 t 的长度。
第四行一个字符串 t。
输出格式
输出一行,为 s 中涵盖 t 所有字符的最小子串;不存在时输出空行。
样例输入 #1
13
ADOBECODEBANC
3
ABC
样例输出 #1
BANC
样例输入 #2
1
a
1
a
样例输出 #2
a
样例输入 #3
1
a
2
aa
样例输出 #3
说明
- 样例 1:最小覆盖子串是
"BANC",它涵盖了t中的一个A、一个B和一个C。 - 样例 2:整个字符串就是答案
"a"。 - 样例 3:
s中只有一个a,无法满足t对两个a的要求,输出空行。 - 大小写字母视为不同字符,例如
'A'与'a'不相同。
数据范围
0 <= n, m <= 10^5s和t由英文字母(区分大小写)组成m = 0时,空字符串即可覆盖,输出空行
相关
在下列比赛中: