leetcode.76 最小覆盖子串Java
📅 2026/7/28 19:33:10
👁️ 次浏览
题目描述思路一两个指针left和right都指向第一个元素然后right指针向右移动知道找到第一个包含的包含的可以用一个map统计然后左指针向左移动看能不能缩小范围当左指针移动到窗口的字母比T的字母个数还少的时候再移动右指针。建立Map字典MapCharacter,IntegerdicTnewHashMap();for(inti0;it.length();i){intcountdicT.getOrDefault(t.charAt(i),0);dicT.put(t.charAt(i),count1);}用一个数组保存结果// 长度 l rint[]ans{-1,0,0};需要特别注意的是Map的value是Integer对象如果使用比较对象的话是比较的地址这个时候要么用equals方法或者用.intValueif(dicT.containsKey(c)Objects.equals(windowCounts.get(c),dicT.get(c))){formed;}或者if(dicT.containsKey(c)windowCounts.get(c).intValue()dicT.get(c).intValue()){formed;}如果直接对象相等是错的。完整代码packageSolution;importjava.util.HashMap;importjava.util.Map;/** * Author : fanc:最小覆盖子串 * Date : 2019-08-26 20:16 */publicclassSolution76{publicstaticStringminWindow(String s,String t){if(s.length()0||t.length()0){return;}MapCharacter,IntegerdicTnewHashMap();for(inti0;it.length();i){intcountdicT.getOrDefault(t.charAt(i),0);dicT.put(t.charAt(i),count1);}//需要的数目intrequireddicT.size();//已经构建的数目intformed0;// 左右两个指针intl0,r0;// 窗口字母个数MapCharacter,IntegerwindowCountsnewHashMap();// 长度 l rint[]ans{-1,0,0};while(rs.length()){charcs.charAt(r);intcountwindowCounts.getOrDefault(c,0);windowCounts.put(c,count1);if(dicT.containsKey(c)windowCounts.get(c).intValue()dicT.get(c).intValue()){System.out.println(1);formed;}while(lrformedrequired){System.out.println(llrr);cs.charAt(l);if(ans[0]-1||r-l1ans[0]){ans[0]r-l1;ans[1]l;ans[2]r;}//尝试左指针向右移动l;windowCounts.put(c,windowCounts.get(c)-1);if(dicT.containsKey(c)windowCounts.get(c).intValue()dicT.get(c).intValue()){formed--;}}r;}returnans[0]-1?:s.substring(ans[1],ans[2]1);}}优化方法优化的滑动窗口我们只需要考虑S包含T的元素因此可以把S包含T的元素单独列出来做一个filter然后遍历这个filter。/** * Author : fanc * Date : 2019-09-01 13:56 */publicclassSolution76_2{publicStringminWindow(String s,String t){if(t.length()0||s.length()0){return;}MapCharacter,IntegerdicTnewHashMap();for(inti0;it.length();i){intcountdicT.getOrDefault(t.charAt(i),0);dicT.put(t.charAt(i),count1);}ListPairInteger,CharacterfilterSnewArrayList();for(inti0;is.length();i){charcs.charAt(i);if(dicT.containsKey(c)){filterS.add(newPair(i,c));}}intl0,r0,formed0;intrequireddicT.size();int[]ans{-1,0,0};MapCharacter,IntegerwindownewHashMap();while(rfilterS.size()){charcfilterS.get(r).getValue();intcountwindow.getOrDefault(c,0);window.put(c,count1);if(window.get(c).intValue()dicT.get(c).intValue()){formed;}while(lrformedrequired){cfilterS.get(l).getValue();intstartfilterS.get(l).getKey();intendfilterS.get(r).getKey();if(ans[0]-1||end-start1ans[0]){ans[0]end-start1;ans[1]start;ans[2]end;}l;window.put(c,window.get(c)-1);if(window.get(c).intValue()dicT.get(c).intValue()){formed--;}}r;}returnans[0]-1?:s.substring(ans[1],ans[2]1);}}在Java里面使用Pair来构建一个存放key和value的list可以使用getKey和getValue的方法来获取Pair里面的key和valueArray初始长度为0之后每次按照之前的1.5倍来扩容在这个例子上面效率比LinkedList高
在AI绘画创作中,你是否遇到过这样的困境:灵感来了,却苦于找不到合适的参考素材;精心构思了画面,却难以用精准的提示词描述;想要批量生成不同风格的变体进行对比,却只能一张张手动操作,效率低下?这些零散的痛点,正是阻碍我们高效创作的绊脚石。 今天,我们将深入探讨…
📅 2026/7/28 19:33:10
经过一段时间的vue学习,一次文章做个汇总。一,1.v-text, v-html ,{{ }} 插值表达式,都可以将vue中data中的数据显示到指定的标签位置中, v-html会将含有html规范的字符串,以此规范解析ÿ…
📅 2026/7/28 19:33:10
1. OpenClaw技术架构解析:Agent能力扩展的底层逻辑 OpenClaw作为新一代智能体开发框架,其核心设计理念直指当前Agent开发的三大痛点:技能复用率低、环境适配成本高、任务泛化能力弱。框架采用模块化架构设计,将传统单体Agent拆解为…
📅 2026/7/28 19:33:10
哎哟喂,搞生物信息学的兄弟姐妹们,是不是又被那个GEO2R给整破防了?我今儿个必须得吐槽两句。昨晚我盯着屏幕,头发都快薅秃了,就为了跑那个该死的差异表达分析。结果呢?报错信息冷冰冰地甩过来,那一刻,我真想顺着网线过去把NCBI服务器给拔了。真的,那种无力感,谁懂啊?…
📅 2026/7/28 22:47:20
摘要: MSC来源外泌体和细胞外囊泡在再生医学、药物递送和细胞治疗衍生产品开发中持续受到关注,但外泌体规模化生产仍面临产量低、背景颗粒高、扩增与收集步骤割裂、下游纯化压力大和工艺放大成本高等问题。Rooster HD-EV是一款面向MSC-EV生产的化学成分限…
📅 2026/7/28 22:48:03
1. 项目概述:当AI遇上专业演示设计 去年为某科技峰会准备路演材料时,我连续72小时修改了23版PPT,最终在会场发现大屏显示比例出错导致排版全乱。这种经历让我开始系统性研究智能演示工具,直到遇见paperxie AI PPT这款真正实现&quo…
📅 2026/7/28 22:48:03
GitHub CLI终极指南:告别浏览器依赖的革命性开发工作流 【免费下载链接】cli GitHub’s official command line tool 项目地址: https://gitcode.com/GitHub_Trending/cli/cli
你是否曾经在终端和浏览器之间频繁切换,只为查看一个Pull Request的状…
📅 2026/7/28 22:48:03
Open Notebook:开源AI知识管理平台的隐私优先架构与多模型智能工作流 【免费下载链接】open-notebook An Open Source implementation of Notebook LM with more flexibility and features 项目地址: https://gitcode.com/GitHub_Trending/op/open-notebook
…
📅 2026/7/28 22:48:03
外卖分销系统开发排名,优惠券叠加计算并发处理逻辑外卖分销系统的核心盈利与用户拉新抓手,在于平台优惠券、分销专属券、渠道补贴券的组合使用能力。优质的外卖分销系统,支持普通满减券、新人券、分销返利券、渠道专属券的合规叠加抵扣&#…
📅 2026/7/28 22:48:03
告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub
你是否也曾为官方Om…
📅 2026/7/28 0:00:45
做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…
📅 2026/7/28 0:00:46
2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…
📅 2026/7/28 0:00:46
更多请点击:
https://codechina.net
第一章:AI帮助理解数学概念 人工智能正以前所未有的方式重塑数学学习的路径。通过自然语言处理与符号计算的深度融合,AI不仅能解析抽象定义,还能将定理、证明和几何直觉转化为可交互、可验证的…
📅 2026/7/28 1:13:29
1. 项目背景与核心价值去年参与的一个短剧项目让我深刻体会到传统创作流程的痛点:编剧团队花了三周打磨剧本,角色设计反复修改了七版,最后成片时又因为演员档期问题不得不临时调整分镜。这种低效的创作模式在快节奏的内容行业越来越难以为继。…
📅 2026/7/28 1:13:29
remix-i18next TypeScript类型安全实践:确保翻译键与类型定义同步 【免费下载链接】remix-i18next The easiest way to translate your React Router framework mode apps 项目地址: https://gitcode.com/gh_mirrors/re/remix-i18next
在开发多语言应用时&am…
📅 2026/7/28 1:13:29
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/28 7:13:45
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/28 17:14:18
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/28 5:13:40