LeetCode【76】最小覆盖子串

news2024/11/20 8:32:31

题目:
在这里插入图片描述

思路:
https://segmentfault.com/a/1190000021815411

代码:

public String minWindow(String s, String t) { 
    Map<Character, Integer> map = new HashMap<>();
    //遍历字符串 t,初始化每个字母的次数
    for (int i = 0; i < t.length(); i++) {
        char char_i = t.charAt(i);
        map.put(char_i, map.getOrDefault(char_i, 0) + 1);
    }
    int left = 0; //左指针
    int right = 0; //右指针
    int ans_left = 0; //保存最小窗口的左边界
    int ans_right = -1; //保存最小窗口的右边界
    int ans_len = Integer.MAX_VALUE; //当前最小窗口的长度
    //遍历字符串 s
    while (right < s.length()) {
        char char_right = s.charAt(right);
        //判断 map 中是否含有当前字母
        if (map.containsKey(char_right)) {
            //当前的字母次数减一
            map.put(char_right, map.get(char_right) - 1);
            //开始移动左指针,减小窗口
            while (match(map)) { //如果当前窗口包含所有字母,就进入循环
                //当前窗口大小
                int temp_len = right - left + 1;
                //如果当前窗口更小,则更新相应变量
                if (temp_len < ans_len) {
                    ans_left = left;
                    ans_right = right;
                    ans_len = temp_len;
                }
                //得到左指针的字母
                char key = s.charAt(left);
                //判断 map 中是否有当前字母
                if (map.containsKey(key)) {
                    //因为要把当前字母移除,所有相应次数要加 1
                    map.put(key, map.get(key) + 1);
                }
                left++; //左指针右移
            }
        }
        //右指针右移扩大窗口
        right++;
    }
    return s.substring(ans_left, ans_right+1);
}

//判断所有的 value 是否为 0
private boolean match(Map<Character, Integer> map) {
    for (Integer value : map.values()) {
        if (value > 0) {
            return false;
        }
    }
    return true;
}

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

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

相关文章

华为防火墙 DMZ 设置

DMZ 是英文"Demilitarized Zone"的缩写&#xff0c;中文名称为"隔离区" 它是为了解决安装防火墙后外部网络不能访问内部网络服务器的问题&#xff0c;而设立的一个位于内部网络与外部网络之间的缓冲区&#xff0c;在这个网络区域内可以放置一些公开的服务…

用户增长常见分析模型

一、用户增长是什么 用户增长基本上会涉及生意场上的各行各业&#xff0c;你开个店面希望有更多的客户光顾&#xff0c;你做了个APP希望有更多的用户经常使用&#xff0c;你搭建了个电商平台希望有更多的人下单买东西。 用户增长&#xff0c;即以提升用户LTV为目的&#xff08…

Oauth2认证及Spring Security Oauth2授权码模式

Oauth2认证 Oauth2简介 简介 第三方认证技术方案最主要是解决认证协议的通用标准问题&#xff0c;因为要实现跨系统认证&#xff0c;各系统之间要遵循一定的接口协议。 OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。同时&#xff0c;任何第三方都可以使…

企企通亮相广东智能装备产业发展大会:以数字化采购促进智能装备产业集群高质量发展

制造业是立国之本&#xff0c;是国民经济的主要支柱、是推动工业技术创新的重要来源。 广东作为我国制造业大省&#xff0c;装备制造业规模增长快速&#xff0c;技术水平居于全国前列。为全面贯彻学习党的二十大精神&#xff0c;进一步推动机械装备可靠性设计&#xff0c;促进新…

【Proteus仿真】【Arduino单片机】多功能数字时钟设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用PCF8574、LCD1602液晶、DS1302温度传感器、DS1302时钟、按键、蜂鸣器等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示当前日期…

放大招:腾讯云5年服务器和3年轻量应用服务器租用价格表

腾讯云3年轻量和5年云服务器CVM优惠活动入口&#xff0c;3年轻量应用服务器配置可选2核2G4M和2核4G5M带宽&#xff0c;5年CVM云服务器可以选择2核4G和4核8G配置可选&#xff0c;阿腾云atengyun.com分享腾讯云3年轻量应用服务器和5年云服务器CVM优惠活动入口和配置报价&#xff…

【C++上层应用】5. 文件和流

文章目录 【 1. 打开文件 】1.1 open 函数1.2 open 多种模式的结合使用 【 2. 关闭文件 】【 3. 写入 & 读取文件 】【 4. 文件位置指针 】 和 iostream 库中的 cin 标准输入流和 cout 标准输出流类似&#xff0c;C中另一个库 fstream 也存在文件的读取流和标准写入流。fst…

erlang语言为什么天生支持高并发

Erlang 语言天生支持高并发的主要原因可以归结于它的设计哲学和一些核心特性。以下是 Erlang 支持高并发的几个关键方面&#xff1a; 轻量级进程&#xff1a;Erlang 使用轻量级的并发实体&#xff0c;通常称为“进程”&#xff0c;这些进程在Erlang虚拟机内部运行&#xff0c;而…

为什么几乎所有的量化交易都用Python?

因为python好用啊&#xff01;Python&#xff0c;作为一种功能强大且易于学习的编程语言&#xff0c;已经成为金融分析师的首选工具。 以下我将从3个方面给大家分析python为何成为量化交易的理想选择。 一、语言特性与金融分析的匹配性 1、简单易懂的语言 Python就像我们的日…

存储区域网络(SAN)之FC-SAN和IP-SAN的比较

存储区域网络(Storage Area Network&#xff0c;SAN)用于将多个系统连接到存储设备和子系统。 早期FC-SAN&#xff1a; 采用光纤通道(Fibre Channel&#xff0c;FC)技术&#xff0c;通过光纤通道交换机连接存储阵列和服务器主机&#xff0c;建立专用于数据存储的区域网络。 传…

Ubuntu apt-get换源

一、参考资料 ubuntu16.04更换镜像源为阿里云镜像源 二、相关介绍 1. apt常用命令 sudo apt-get clean sudo apt-get update2. APT加速工具 轻量小巧的零配置 APT 加速工具&#xff1a;APT Proxy GitHub项目地址&#xff1a;apt-proxy 三、换源关键步骤 1. 更新阿里源 …

【开源】基于JAVA的学生日常行为评分管理系统

项目编号&#xff1a; S 010 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S010&#xff0c;文末获取源码。} 项目编号&#xff1a;S010&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、系统设计2.1 功能模块设计2.2.1 登录注册模块2.2…

美国费米实验室SQMS启动“量子车库”计划!30+顶尖机构积极参与

​11月6日&#xff0c;美国能源部费米国家加速器实验室(SQMS)正式启动了名为“量子车库”的全新旗舰量子研究设施。这个6,000平方英尺的实验室是由超导量子材料与系统中心负责设计和建造&#xff0c;旨在联合国内外的科学界、工业领域和初创企业&#xff0c;共同推动量子信息科…

Java零基础-Mybatis篇

【Mybatis】 1.JDBC不足 JDBC作为Java操作数据库的模板&#xff0c;如果想要对数据库进行操作&#xff0c;必须使用JDBC&#xff0c;但是在使用JDBC进行数据库操作时&#xff0c;重复代码多&#xff0c;动态SQL构建繁琐&#xff0c;将查询结果转化为对象&#xff0c;相当麻烦…

基于SSM的网盘管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

企业办公文件数据防泄密系统 | 文件、文档、设计图纸、源代码、音视频等核心数据资料防止外泄!

天锐绿盾防泄密软件采用智能透明加密技术&#xff0c;对文件、文档、图纸、源代码、音视频等数据进行加密保护&#xff0c;防止数据泄露。这种加密技术是内核级透明加密技术&#xff0c;可以在不影响员工正常工作的情况下&#xff0c;对需要保护的数据进行加密操作。 PC端访问地…

DCDC同步降压控制器SCT82A30\SCT82630

SCT82A30是一款100V电压模式控制同步降压控制器&#xff0c;具有线路前馈。40ns受控高压侧MOSFET的最小导通时间支持高转换比&#xff0c;实现从48V输入到低压轨的直接降压转换&#xff0c;降低了系统复杂性和解决方案成本。如果需要&#xff0c;在低至6V的输入电压下降期间&am…

一种可度量的测试体系-精准测试

行业现状 软件行业长期存在一个痛点&#xff0c;即测试效果无法度量。通常依赖于测试人员的能力和经验&#xff0c;测试结果往往不可控&#xff0c;极端情况下同一个业务功能&#xff0c;即使是同一个人员在不同的时间段&#xff0c;测试场景和过程也可能不一致&#xff0c;从而…