【Hot100】LeetCode—76. 最小覆盖子串
题目
- 原题链接:76. 最小覆盖子串
1- 思路
利用两个哈希表解决分为 :① 初始化哈希表、②遍历 s,处理当前元素,判断当前字符是否有效、③收缩窗口、④更新最小覆盖子串
2- 实现
⭐76. 最小覆盖子串——题解思路

class Solution {public String minWindow(String s, String t) {// 定义两个 HashMapHashMap<Character,Integer> hs = new HashMap<>();HashMap<Character,Integer> ht = new HashMap<>();// 定义 int cnt = 0;String res = "";// 初始化 htfor(int i = 0 ; i < t.length();i++){char c = t.charAt(i);ht.put(c,ht.containsKey(c) ? ht.get(c)+1:1);}// 遍历 sfor(int i = 0, j = 0 ; i < s.length();i++){char c = s.charAt(i);hs.put(c, hs.containsKey(c) ? hs.get(c)+1 : 1);// 判断 i 合法if(ht.containsKey(c) && hs.get(c) <= ht.get(c)) cnt++;// 缩小区间while (j <= i && (!ht.containsKey(s.charAt(j)) || hs.get(s.charAt(j)) > ht.get(s.charAt(j)))) {hs.put(s.charAt(j), hs.get(s.charAt(j ++)) - 1);}// 3 收集结果// 首先是必须等于 cnt && (hs.length()> (i-j+1) || res.length()<1)if(cnt==t.length() && ( res.length() > (i-j+1) || res.length()<1)){res = s.substring(j,i+1);}}return res;}
}
3- ACM 实现
public class minWindow {public static String minWindow(String s,String t){// 1.数据结构HashMap<Character,Integer> ht = new HashMap<>();HashMap<Character,Integer> window = new HashMap<>();int cnt = 0;String res = "";// 2.遍历 t 初始化 htfor(int i = 0 ; i < t.length();i++){char c = t.charAt(i);ht.put(c,ht.containsKey(c)? ht.get(c)+1:1);}// 3.遍历 sfor(int i = 0,j=0 ; i < s.length();i++){char cc = s.charAt(i);window.put(cc,window.containsKey(cc)? window.get(cc)+1:1);// 判 cc 断有效性// 在 ht 中if(ht.containsKey(cc) && window.get(cc) <=ht.get(cc)) cnt++;// 窗口收缩while(j<=i && (!ht.containsKey(s.charAt(j)) || window.get(s.charAt(j)) > ht.get(s.charAt(j)))){window.put(s.charAt(j),window.get(s.charAt(j++))-1);}// 更行 resif(cnt == t.length() && (res.length()>(i-j+1) || res.length()<1)){res = s.substring(j,i+1);}}return res;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("输入字符串1");String s = sc.nextLine();System.out.println("输入字符串2");String t = sc.nextLine();String res = minWindow(s,t);System.out.println("结果是"+ res);}
}
相关文章:
【Hot100】LeetCode—76. 最小覆盖子串
题目 原题链接:76. 最小覆盖子串 1- 思路 利用两个哈希表解决分为 :① 初始化哈希表、②遍历 s,处理当前元素,判断当前字符是否有效、③收缩窗口、④更新最小覆盖子串 2- 实现 ⭐76. 最小覆盖子串——题解思路 class Solution …...
删除排序链表中的重复元素 II(LeetCode)
题目 给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。 解题 class ListNode:def __init__(self, val0, nextNone):self.val valself.next nextclass Solution:def deleteDuplicates(self…...
【Java】解决如何将Http转为Https加密输出
目录 HTTP转HTTPS一、 获取 SSL/TLS 证书二、 安装证书2.1 Apache2.2 Nginx 三、更新网站配置四. 更新网站链接五. 检查并测试六. 自动续期(针对 Lets Encrypt) HTTP转HTTPS 将网站从 HTTP 转换为 HTTPS 能够加密数据传输,还能提高搜索引擎排…...
二叉树链式结构的实现(递归的暴力美学!!)
前言 Hello,小伙伴们。你们的作者菌又回来了,前些时间我们刚学习完二叉树的顺序结构,今天我们就趁热打铁,继续我们二叉树链式结构的学习。我们上期有提到,二叉树的的底层结构可以选为数组和链表,顺序结构我们选用的数…...
Python | Leetcode Python题解之第312题戳气球
题目: 题解: class Solution:def maxCoins(self, nums: List[int]) -> int:n len(nums)rec [[0] * (n 2) for _ in range(n 2)]val [1] nums [1]for i in range(n - 1, -1, -1):for j in range(i 2, n 2):for k in range(i 1, j):total v…...
远程访问mysql数据库的正确打开方式
为了安全,mysql数据库默认只能本机登录,但是在有些时候,我们会有远程登录mysql数据库的需求,这时候应该怎么办呢? 远程访问mysql数据,需要两个条件: 首先需要mysql服务器将服务绑定到0.0.0.0…...
网络6 -- udp_socket 实现 echo服务器
目录 1.server 服务端 1.1.完整代码展示: 1.2.代码解析: 1.2.1 给服务端创建套接字 1.2.2 绑定套接字 1.2.3 服务端接受数据并返回 2.客户端: 2.1 完整代码展示: 2.2 代码解析 2.2.1 客户端使用手则: 2.2.2 …...
ASUS/华硕幻15 2020 冰刃4 GX502L GU502L系列 原厂win10系统 工厂文件 带F12 ASUS Recovery恢复
华硕工厂文件恢复系统 ,安装结束后带隐藏分区,一键恢复,以及机器所有驱动软件。 系统版本:windows10 原厂系统下载网址:http://www.bioxt.cn 需准备一个20G以上u盘进行恢复 请注意:仅支持以上型号专用…...
simulink绘制bode图
🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…...
知识工程视角下的软件研发
知识工程 在我们的工作中存在两类知识:显式知识(explicit knowledge)、不可言说的知识(tacit knowledge)。 所谓显式知识就是能够直接表达且在人群中分享的知识。比如,地球的周长、水的密度、三角形面积公…...
深度学习------权重衰退
目录 使用均方范数作为硬性限制使用均方范数作为柔性限制演示最优解的影响参数更新法则总结高纬线性回归多项式的权重衰退从零开始实现初始化模型参数定义L2范数惩罚定义训练代码实现忽略正则化直接训练使用权重衰减从零开始代码实现 多项式的权重衰退的简洁实现简洁函数代码简…...
【算法】退火算法 Simulated Annealing
退火算法(Simulated Annealing, SA)是一种基于热力学模拟的优化算法,用于求解全局优化问题。它通过模拟物理退火过程来寻找全局最优解。以下是退火算法的基本原理和步骤: 一、基本原理 退火算法的灵感来源于金属在高温下缓慢冷却…...
深入理解 Git `git add -p` 命令中的交互选项
个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119@qq.com] 📱个人微信:15279484656 🌐个人导航网站:www.forff.top 💡座右铭:总有人要赢。为什么不能是我呢? 专栏导…...
HTML JavaScript 闪光涟漪
<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>闪光涟漪</title><style>.ripple-conta…...
FastAPI之Depends
文章目录 基本概念基本用法复杂场景中的 Depends数据库会话管理处理请求用户嵌套依赖全局依赖 作用域与生命周期可选依赖类依赖总结 基本概念 在 FastAPI 中,依赖可以是: 一个函数,它的返回值会被传递给视图函数作为参数。可以被其他依赖函…...
AttributeError: module ‘jwt‘ has no attribute ‘decode‘解决方案
大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...
C++——C++11
前言:本篇文章将分享一些C11版本所产生的一些新的技术以及对老版本的优化。 目录 一.C11简介 二.统一的列表初始化 1.{}初始化 2.std::initializer_list 三.右值引用和移动语义 1.左值引用和右值引用 2.两者的比较 (1)左值引用 &#…...
day12 多线程
目录 1.概念相关 1.1什么是线程 1.2什么是多线程 2.创建线程 2.1方式一:继承Thread类 2.1.1实现步骤 2.1.2优缺点 2.1.3注意事项 2.2方式二:实现Runnable接口 2.2.1实现步骤 2.2.2优缺点 2.2.3匿名内部类写法 2.3方式三:实现cal…...
DeferredResult 是如何实现异步处理请求的
最近遇到了一个问题,我们的一个接口需要去轮询另一个第三方接口,导致这个接口占用了太多工作线程,这些工作线程长时间 running,我们需要解决这个问题。 于是,我们的方案是:用 DeferredResult 实现接口异步。…...
VUE3——001(03)、开发环境配置(node.js/mvn/java/ngix/tomact/vue3)
嫌麻烦的请下载安装包,有点强迫(懒的)可以看看。 解释:安装目录,即软件安装所在目录,如 node.js 我装在 D:\AppFolder\nodejs 系统变量修改 path增加 安装目录 在系统变量 p…...
蓝桥杯备赛避坑指南:从校赛落选到国三逆袭的实战经验分享
蓝桥杯备赛避坑指南:从校赛落选到国三逆袭的实战经验分享 第一次参加蓝桥杯校赛时,我连最简单的编程题都没能完整写出。看着屏幕上仅完成的两道签到题和一堆未通过的测试用例,那种挫败感到现在都记忆犹新。但正是这次失败,让我后来…...
安卓蓝牙开发避坑指南:Bluedroid初始化流程中的5个关键细节
安卓蓝牙开发避坑指南:Bluedroid初始化流程中的5个关键细节 在安卓蓝牙协议栈开发中,Bluedroid的初始化流程是系统与蓝牙硬件建立通信的基础桥梁。许多看似随机的蓝牙功能异常,往往源于初始化阶段某些参数的微妙配置差异。本文将深入剖析五个…...
Cisco Packet Tracer新手必看:5分钟搞定路由器静态路由配置(附避坑指南)
Cisco Packet Tracer静态路由配置实战:从零到精通的完整指南 刚接触网络工程的朋友们,第一次在Cisco Packet Tracer中配置静态路由时,是不是经常遇到"网络不通"的困扰?作为网络通信的基础技能,静态路由配置看…...
高频电路设计必看:5分钟搞懂PCB阻抗匹配的3个关键参数(附SI9000计算技巧)
高频PCB设计实战:从阻抗理论到SI9000精准计算的完整指南 引言:为什么你的高速信号总是不稳定? 上周和一位资深硬件工程师聊天,他提到自己设计的千兆以太网板卡在测试时总是出现信号抖动问题,反复调整了三四版Layout依然…...
解密革命性构建工具:PoeCharm如何突破传统限制实现高效角色规划
解密革命性构建工具:PoeCharm如何突破传统限制实现高效角色规划 【免费下载链接】PoeCharm Path of Building Chinese version 项目地址: https://gitcode.com/gh_mirrors/po/PoeCharm 在流放之路的复杂游戏生态中,角色构建往往成为玩家面临的最大…...
3种激活方案:解决IDM弹窗问题的开源工具应用指南
3种激活方案:解决IDM弹窗问题的开源工具应用指南 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 一、问题溯源:解析IDM激活弹窗的技术本质…...
电子元器件检测数据集VOC+YOLO格式1032张5类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):1032标注数量(xml文件个数):1032标注数量(txt文件个数):1032标注类别…...
用LVGL玩转嵌入式UI:5个实战控件代码详解(按钮/滑块/图片/标签/开关)
LVGL嵌入式UI开发实战:五大核心控件深度解析与代码优化 在资源受限的嵌入式设备上实现流畅美观的用户界面,一直是开发者面临的挑战。LVGL(Light and Versatile Graphics Library)作为一款轻量级开源图形库,凭借其丰富的…...
OpenClaw+ollama-QwQ-32B自动化测试:从用例生成到结果分析
OpenClawollama-QwQ-32B自动化测试:从用例生成到结果分析 1. 为什么选择OpenClaw做测试自动化 作为一个长期与测试代码打交道的开发者,我一直在寻找能够真正减轻重复劳动的解决方案。传统的测试框架虽然成熟,但编写和维护测试用例仍然占据了…...
离网逆变器下垂控制实战:从公式推导到MATLAB仿真(附资源下载)
离网逆变器下垂控制实战:从公式推导到MATLAB仿真 在新能源发电系统中,离网逆变器的稳定运行至关重要。传统电压电流双闭环控制虽然简单直接,但在面对复杂负载变化时,往往会出现电压跌落、频率失稳等问题。下垂控制技术通过模拟同…...
