最小覆盖子串

每日一练社区 2021-08-12 15:22:25

给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 ""

注意:如果 s 中存在这样的子串,我们保证它是唯一的答案。

 

示例 1:

输入:s = "ADOBECODEBANC", t = "ABC"
输出:
"BANC"

示例 2:

输入:s = "a", t = "a"
输出:
"a"

 

提示:

  • 1 <= s.length, t.length <= 105
  • st 由英文字母组成

 

进阶:你能设计一个在 o(n) 时间内解决此问题的算法吗?

以下程序实现了这一功能,请你填补空白处内容:

public class Min_Win_Sub {
	public String minWindow(String s, String t) {
		int[] ta = new int[128];
		int[] sa = new int[128];
		int min = Integer.MAX_VALUE;
		String minwin = "";
		for (int i = 0; i < t.length(); i++) {
			ta[t.charAt(i)]++;
		}
		int count = 0;
		int end = 0;
		int start = 0;
		while (end < s.length()) {
			if (ta[s.charAt(end)] != 0) {
				if (sa[s.charAt(end)] < ta[s.charAt(end)]) {
					count++;
				}
				sa[s.charAt(end)]++;
			}
			if (count == t.length()) {
				_________________;
				if (end - start + 1 < min) {
					minwin = s.substring(start, end + 1);
					min = end - start + 1;
				}
			}
			end++;
		}
		return minwin;
	}

}
...全文
484 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
C
  • 打赏
  • 举报
回复
可以把这些输入进去跑一下
m0_74876128 2022-12-17
  • 打赏
  • 举报
回复

D

hwk612167 2022-10-14
  • 打赏
  • 举报
回复
滑动窗口,r右移到全部找到的位置,判断是否最小子串,l右移接着循环
lolsphk 2022-06-30
  • 打赏
  • 举报
回复
有点困晕了
m0_63388810 2022-05-25
  • 打赏
  • 举报
回复 1
为什么出了题目却不给答案😢😢
夙染尘 2022-03-16
  • 打赏
  • 举报
回复

为什么要这么写啊

云云云海 2022-03-07
  • 打赏
  • 举报
回复
题目选项会变吗?我全选了一遍没一个对的
云云云海 2022-03-07
  • 打赏
  • 举报
回复 1
有点离谱,来个懂哥说下答案思路吧
暴鲤鱼 2022-02-08
  • 打赏
  • 举报
回复 1
这有点绕啊,哪里需要这种空间复杂度
聪本聪 2022-01-07
  • 打赏
  • 举报
回复 1
什么玩意,哪用得着这么复杂
EngineerForSoul 2021-12-27
  • 打赏
  • 举报
回复
这题意义还在

11,501

社区成员

发帖
与我相关
我的任务
社区描述
Study well and make progress every day
其他 企业社区
社区管理员
  • 每日一练社区
  • CSDN学习
  • 幻灰龙
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧