leetcode76最后一个测试用例无法通过

2024-04-02 01:44

本文主要是介绍leetcode76最后一个测试用例无法通过,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

76 最小覆盖子串

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

注意:

  • 对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。
  • 如果 s 中存在这样的子串,我们保证它是唯一的答案。

示例 1:

输入:s = "ADOBECODEBANC", t = "ABC"
输出:"BANC"
解释:最小覆盖子串 "BANC" 包含来自字符串 t 的 'A'、'B' 和 'C'。

示例 2:

输入:s = "a", t = "a"
输出:"a"
解释:整个字符串 s 是最小覆盖子串。

示例 3:

输入: s = "a", t = "aa"
输出: ""
解释: t 中两个字符 'a' 均应包含在 s 的子串中,
因此没有符合条件的子字符串,返回空字符串。

难点

  • 踩坑:Java 的 Integer 类型比较,尤其是在使用 Map<>,等类型时,可能存在泛型为 Integer 的情况,一定注意 Integer 的比较 要用 equal

最后一个例子通不过的坑,

  • 当Integer类型的数值超出了-128~127的范围,就要用equals比较而不能用==判断
  • 数值在-128~127的范围内,就存在Integer的缓存里面,超过这个范围就会new Integer对象

解法

第十六行,原本使用 == 判断的是否相等,导致最后一个测试用例无法通过!

public String minWindow(String s, String t) {if(t.length() > s.length()) return "";Map<Character,Integer> tCount = new HashMap<>();for (int i = 0; i < t.length(); i++) {tCount.put(t.charAt(i), tCount.getOrDefault(t.charAt(i),0)+1 );}Map<Character,Integer> sCount = new HashMap<>();Map<Character,Queue<Integer>> index = new HashMap<>();String ret = "" ;for (int i = 0; i < s.length(); i++) {if(tCount.containsKey(s.charAt(i)) && sCount.getOrDefault(s.charAt(i),0) < tCount.getOrDefault(s .charAt(i),0)){Queue<Integer> queue = index.getOrDefault(s.charAt(i), new LinkedList<>());queue.offer(i);index.put(s.charAt(i) , queue );sCount.put(s.charAt(i), sCount.getOrDefault(s.charAt(i),0)+1 );} else if (tCount.containsKey(s.charAt(i)) && Objects.equals(sCount.getOrDefault(s.charAt(i), 0), tCount.getOrDefault(s.charAt(i), 0))) {Queue<Integer> queue = index.getOrDefault(s.charAt(i), new LinkedList<>());queue.offer(i);queue.poll();index.put(s.charAt(i) , queue );}if(tCount.equals(sCount)){int begin = index.values().stream().map(Queue::peek).min(Comparator.naturalOrder()).get();if (ret.equals("") || i+1 - begin < ret.length()) {ret = s.substring(begin,i+1);}sCount.put(s.charAt(begin) , sCount.get(s.charAt(begin))-1 );Queue<Integer> queue = index.getOrDefault(s.charAt(begin), new LinkedList<>());queue.poll();index.put(s.charAt(begin) , queue );}}return ret;}

这篇关于leetcode76最后一个测试用例无法通过的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/868659

相关文章

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

element-ui下拉输入框+resetFields无法回显的问题解决

《element-ui下拉输入框+resetFields无法回显的问题解决》本文主要介绍了在使用ElementUI的下拉输入框时,点击重置按钮后输入框无法回显数据的问题,具有一定的参考价值,感兴趣的... 目录描述原因问题重现解决方案方法一方法二总结描述第一次进入页面,不做任何操作,点击重置按钮,再进行下

Java子线程无法获取Attributes的解决方法(最新推荐)

《Java子线程无法获取Attributes的解决方法(最新推荐)》在Java多线程编程中,子线程无法直接获取主线程设置的Attributes是一个常见问题,本文探讨了这一问题的原因,并提供了两种解决... 目录一、问题原因二、解决方案1. 直接传递数据2. 使用ThreadLocal(适用于线程独立数据)

使用@Slf4j注解,log.info()无法使用问题

《使用@Slf4j注解,log.info()无法使用问题》在使用Lombok的@Slf4j注解打印日志时遇到问题,通过降低Lombok版本(从1.18.x降至1.16.10)解决了问题... 目录@Slf4androidj注解,log.info()无法使用问题最后解决总结@Slf4j注解,log.info(

三国地理揭秘:为何北伐之路如此艰难,为何诸葛亮无法攻克陇右小城?

俗话说:天时不如地利,不是随便说说,诸葛亮六出祁山,连关中陇右的几座小城都攻不下来,行军山高路险,无法携带和建造攻城器械,是最难的,所以在汉中,无论从哪一方进攻,防守方都是一夫当关,万夫莫开;再加上千里运粮,根本不需要打,司马懿只需要坚守城池拼消耗就能不战而屈人之兵。 另一边,洛阳的虎牢关,一旦突破,洛阳就无险可守,这样的进军路线,才是顺势而为的用兵之道。 读历史的时候我们常常看到某一方势

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

使用Qt编程QtNetwork无法使用

使用 VS 构建 Qt 项目时 QtNetwork 无法使用的问题 - 摘叶飞镖 - 博客园 (cnblogs.com) 另外,强烈建议在使用QNetworkAccessManager之前看看这篇文章: Qt 之 QNetworkAccessManager踏坑记录-CSDN博客 C++ Qt开发:QNetworkAccessManager网络接口组件 阅读目录 1.1 通用API函数

Clion不识别C代码或者无法跳转C语言项目怎么办?

如果是中文会显示: 此时只需要右击项目,或者你的源代码目录,将这个项目或者源码目录标记为项目源和头文件即可。 英文如下:

解决ubuntu系统无法与FinalShell无法连接问题

问题 解决方案 先下载ubuntu网络工具 sudo apt install net-tools 输入密码 下载完成后进入管理员模式查看密码 sudo -i hostname -I 查看IP 得到ip地址后再继续安装 openssh-server 插件 sudo apt-get install openssh-server 问题解决 尝试连接Fina

gazebo 已加载模型但无法显示

目录 写在前面的话问题一:robot_state_publisher 发布机器人信息失败报错一 Error: Error document empty.报错二 .xcaro 文件中有多行注释成功启动 问题二:通过 ros2 启动 gazebo 失败成功启动 问题三:gazebo 崩溃和无法显示模型问题四: 缺少 robot_description 等话题正确的输出 写在前面的话