Leetcode--76. 最小覆盖子串

给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串。

示例:

输入: S = "ADOBECODEBANC", T = "ABC"
输出: "BANC"
说明:

如果 S 中不存这样的子串,则返回空字符串 ""。
如果 S 中存在这样的子串,我们保证它是唯一的答案。

提交的代码:

class Solution {

    public String minWindow(String s, String t) {

  Map<Character, Integer> map = new HashMap<>();

        for (char c : s.toCharArray()) map.put(c, 0); //初始化s的字符,全部为key-0

        for (char c : t.toCharArray()) {

            if (map.containsKey(c)) {

                map.put(c, map.get(c) + 1); //t中出现的字符数 key-int

            } else {

                return "";

            }

        }

        String result = "";

        //记录需要被匹配的次数

        int count = t.length();

        int right = 0;

        int left = 0;

        while (right < s.length()) {

            char c = s.charAt(right);

            //将字符进行匹配

            if (map.get(c) > 0) {

                count--;

            }

            map.put(c, map.get(c) - 1);

            right++;

            while (count == 0) {

                //替换最小结果

                if(result.length() == 0){

                    result = s.substring(left, right);

                }else if (result.length() > (right - left)) {

                    result = s.substring(left, right);

                }

                //移动左指针

                char c1 = s.charAt(left);

                if (map.get(c1) == 0) {  //是0说明是t中的字符,否则是负数

                    count++;

                }

                map.put(c1, map.get(c1) + 1);

                left++;

            }

        }

        return result;

    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485372.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

京东《未来科技趋势白皮书》,101页pdf

来源&#xff1a;专知2020年&#xff0c;疫情震荡全球&#xff0c;经济波动剧烈&#xff0c;无论是国家还是企业&#xff0c;都希望通过把握未来科技“脉搏”&#xff0c;驱散经济下行阴影&#xff0c;实现组织升级迭代。逝者如斯&#xff0c;新的十年&#xff0c;哪些关键技术…

JSP中get和post请求方式的区别及乱码解决方法

JSP中get和post请求方式的区别及乱码解决方法 get提交方式&#xff1a;默认method“get” 和 地址栏、超链接请求方式默认都属于get提交方式 form表单的method属性&#xff1a;提交服务器的http方法&#xff0c;一般为post和get get与post请求方式的区别&#xff1a; get方式 …

RISC-V有何特别之处?

作者&#xff1a;Erik Engheim译者&#xff1a;冬雨整理&#xff1a;陈思20 世纪 90 年代末&#xff0c;RISC 和 CISC 爆发了一场大战&#xff0c;自那以后&#xff0c;大家却说 RISC 和 CISC 的区别没那么重要了了。许多人表示&#xff0c;指令集也就那么回事&#xff0c;对 C…

【剑指offer】面试题21:调整数组顺序使奇数位于偶数前面

题目&#xff1a;&#xff1a;输入一个整数数组&#xff0c;实现一个函数来调整该数组中数字的顺序&#xff0c;使得所有奇数位于数组的前半部分&#xff0c;所有偶数位于数组的后半部分。 代码&#xff1a; package offer; public class ti21 { public static void main…

数据库存取BLOB类型音乐文件的过程及常见错误

数据库存取BLOB类型音乐文件的过程及常见错误 数据库端的准备工作&#xff1a; 新建表&#xff0c;用来存放音乐文件&#xff1a;mymusic 第一列&#xff1a;id 类型&#xff1a;int 第二列&#xff1a;music 类型&#xff1a;blob 将音乐文件存入数据库 /*** */ package cn…

Trie可持久化Trie

WARNING&#xff1a;以下代码未经测试&#xff0c;若发现错误&#xff0c;欢迎指出qwq~ Trie树&#xff08;字典树&#xff09; 一种简单的数据结构&#xff0c;可存储大量字符串&#xff0c;可在$O(len)$的时间内完成插入&#xff0c;删除&#xff0c;查找等操作。 下面是一个…

视觉的目的是什么?从监督学习到对比学习,回顾CV发展史

来源&#xff1a;AI科技评论作者&#xff1a; 周纵苇知乎摘要&#xff1a;视觉&#xff0c;对于人类或动物来说&#xff0c;似乎是一件稀松平常的事情&#xff0c;我们甚至都不需要去有意识地训练自己&#xff0c;就可以天赋一般地认识世界。对于机器而言&#xff0c;理解图片却…

【剑指offer】面试题22:链表中倒数第 K 个节点

题目&#xff1a; 输入一个链表&#xff0c;输出该链表中倒数第k哥结点。为了符合大多数人的习惯&#xff0c;本题从1开始计数&#xff0c;即链表的尾结点是倒数第1个结点。例如一个链表有6个结点&#xff0c;从头结点开始它们的值依次是1&#xff0c;2&#xff0c;3&#xff0…

day7——集合,深浅copy

数据类型的补充 # s1 中国    # b1 s1.encode(utf-8)    # # print(b1)-------------->b\xe4\xb8\xad\xe5\x9b\xbd utf-8 bytes --->gbk bytes    # s2 b1.decode(utf-8)    # # print(s2)---------------中国    # b2 s2.encode(gbk)    #…

MVC原理及案例分析

MVC原理及案例分析 关于MVC MVC全名是Model View Controller&#xff0c;是模型(model)&#xff0d;视图(view)&#xff0d;控制器(controller)的缩写&#xff0c;一种软件设计典范&#xff0c;用一种业务逻辑、数据、界面显示分离的方法组织代码&#xff0c;将业务逻辑聚集到…

人工智能的鱼与熊掌:精度与可解释性

来源&#xff1a;陈德旺科学网博客链接地址&#xff1a;http://blog.sciencenet.cn/blog-57940-1270913.html 人工智能自1956年诞生之日&#xff0c;就肩负用计算机程序模拟人类&#xff08;或生物体&#xff09;智能的初心与使命&#xff0c;从而理解智能的工作原理与运作机制…

MVC与三层架构的联系及三层架构实现学生注册功能

MVC与三层架构的联系及三层架构实现学生注册功能 三层架构的逻辑关系&#xff1a; MVC和三层架构的联系&#xff1a; 三层架构实现学生注册功能的逻辑&#xff1a; 学生注册页面&#xff1a; 输入学生信息&#xff1a; 完成学生注册: 代码实现&#xff1a; add.jsp <% …

【剑指offer】面试题23:链表中环的入口节点

一个链表中包含环&#xff0c;请找出该链表的环的入口结点 代码&#xff1a; package offer; class Node3 { int val; Node3 next null; Node3(int val) { this.val val; } } public class ti23 { public static Node3 FindInterNode(Node…

(4.14)向上取整、向下取整、四舍五入取整的实例

Sql Server 里的向上取整、向下取整、四舍五入取整的实例&#xff01; 2012年12月31日 07:33:43 阅读数&#xff1a;102170 【四舍五入取整截取】select round(54.56,0) 【向下取整截取】 SELECT FLOOR(54.56) 【向上取整截取】 SELECT CEILING(13.15)以下转自&#xff1a;…

MVC5+EF6 入门完整教程11--细说MVC中仓储模式的应用

MVC5EF6 入门完整教程11--细说MVC中仓储模式的应用 原文:MVC5EF6 入门完整教程11--细说MVC中仓储模式的应用摘要&#xff1a; 第一阶段1~10篇已经覆盖了MVC开发必要的基本知识。 第二阶段11&#xff5e;20篇将会侧重于专题的讲解&#xff0c;一篇文章解决一个实际问题。 根据…

Java Web实现信息管理

Java Web实现信息管理 前言&#xff1a; 大二上学期刚学完Oracle&#xff0c;老师就要求用Java语言操作Oracle&#xff0c;当时真的是懵了。回顾自己前两年的生活&#xff0c;大一上学期学习C语言&#xff0c;下学期学习Java&#xff0c;当时教课老师是学硬件的。课上讲一些理…

【剑指offer】面试题25:合并两个排序的链表(Java 实现)

题目&#xff1a;输入两个递增排序的链表&#xff0c;合并这两个链表并使新链表中的结点仍然是按照递增排序的。 代码&#xff1a; package offer; class Node5 { int val; Node5 next null; Node5(int val) { this.val val; } } public class…

计算机科学界至今未解决的四大难题

作者&#xff1a;Shalitha Suranga译者&#xff1a;弯月 责编&#xff1a;张文出品&#xff1a;CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;在现实生活中&#xff0c;很多难题的解决方案都用到了计算机科学的基础理论。例如&#xff0c; Git 分布式版本控制系统建立…

PHP正则匹配到2个字符串之间的内容,匹配HTML便签内容

PHP正则匹配到2个字符串之间的内容 $preg /xue[\s\S]*?om/i; preg_match_all($preg,"学并思网址xuebingsi.com",$res); var_dump($res[0][0]); 匹配HTML便签内容 假如需要匹配下面HTML字符串里面的第三个<img> 把它替换掉,或者删除掉这样个需求 $string <p…

【剑指offer】面试题24:反转链表(Java 实现)

输入一个链表&#xff0c;反转链表后&#xff0c;输出新链表的表头。 代码&#xff1a; package offer; class Node4 { int val; Node4 next null; Node4(int val) { this.val val; } } public class ti24 { public static Node4 ReverseL…