力扣 76.最小覆盖子串

题目:
在这里插入图片描述
题目理解:这题属于最小滑动窗口。所求得的连续滑动窗口包含来t中的字符,不一定要按照t中的顺序。

class Solution {
    public String minWindow(String s, String t) {
    	// table表示字符串t里的字符
        if (s == null || s.length() == 0 || t == null || t.length() == 0)
            return "";
        int[] table = new int[128];
        int count = t.length();
        for (int i = 0; i < count; i++)
            table[t.charAt(i)] += 1;
        // l表示滑动窗口的左端,r表示滑动窗口的右端
        int l = 0, r = 0, ans = Integer.MAX_VALUE, start = 0;
        while (r < s.length()){
            char c = s.charAt(r);
            if (table[c] > 0)  // 大于0表示t中的这个字符还没有取完
                count--;
            table[c]--;
            //  当count等于0时,说明t中的字符已经全部包含在l-r这个区间。
            //  因为题目求的是最小子串,所以这时候要向右移动l
            if (count == 0){
            	//  当table[某个字符]小于0时,说明当前碰到的字符不是属于t中的。如果属于t中的,table的数值应该是0
                while (l < r && table[s.charAt(l)] < 0){
                    table[s.charAt(l)]++;
                    l++;
                }
                if (r - l + 1 < ans){
                    ans = r - l + 1;
                    start = l;
                }
                table[s.charAt(l)]++;
                l++;
                count++;
            }
            r++;
        }
        return ans == Integer.MAX_VALUE? "": s.substring(start, start + ans);
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ThingsBoaed、系统模块层级讲解

系统管理员能够使用租户配置文件为多个租户配置通用设置。每个租户在单个时间点都拥有唯一的个人资料。 让我们一一查看租户配置文件中的可用设置。 配置文件配置 这些设置允许系统管理员配置对租户创建的实体数量的限制&#xff0c;设置每月最大消息数、API 调用数的限制&…

Java集合详解(一)-- List集合

1.集合简介 java集合可分为Set、List、Queue和Map四种体系。 Java集合就像一种容器&#xff0c;可以把多个对象&#xff08;实际上是对象的引用&#xff0c;但习惯上都称对象&#xff09;“丢进”该容器中。从Java 5 增加了泛型以后&#xff0c;Java集合可以记住容器中对象的数…

02-JDK新特性-try-with-resources自动管理资源关闭

try-with-resources 为什么要介绍这个了 看看一下以下代码&#xff1a; public static void fileCopyByTryWithResources(File src, File des) throws IOException {try (FileInputStream fis new FileInputStream(src); FileOutputStream fos new FileOutputStream(des);…

SecureCRT防止超时自动断开

Options——>Session Options——>Terminal——>选择 Send protocol NO-OP ——>60seconds&#xff08;每一分钟发送一次请求&#xff09;

【考研数学】《1800》《660》还是《880》?怎么刷效果最好?

刷题吃不透&#xff0c;做了再多也没用&#xff01; 你目前连1800都没法拿下&#xff0c;你还着急要做660和880&#xff0c;是认真的吗&#xff1f; 这《接力题典1800》有啥特色呢&#xff1f;知识点全面覆盖&#xff0c;题目中规中矩&#xff0c;配合汤老师的视频看效果更佳…

【二分查找】Leetcode 二分查找

题目解析 二分查找在数组有序可以使用&#xff0c;也可以在数组无序的时候使用&#xff08;只要数组中的一些规律适用于二分即可&#xff09; 704. 二分查找 算法讲解 当left > right的时候&#xff0c;我们循环结束&#xff0c;但是当left和right缩成一个点的时候&#x…

【Java SE】继承与组合

&#x1f970;&#x1f970;&#x1f970;来都来了&#xff0c;不妨点个关注叭&#xff01; &#x1f449;博客主页&#xff1a;欢迎各位大佬!&#x1f448; 文章目录 1. 再谈初始化2. 再谈protected关键字2.1 子类可见性2.2 访问修饰限定符的选择 3. 继承与组合 1. 再谈初始化…

Python实现获取某手视频评论【自动生成did】

今天在获取某手视频评论的时候&#xff0c;总是会出发风控导致web_did失效&#xff0c;就算登录了也没用&#xff0c;还会导致账号被风控&#xff0c;app端抓包和逆向难度又大&#xff0c;那么有没有一种不需要登录而且不会出发风控的方法来获取评论列表呢&#xff1f;当然有&a…

Python球球大作战

文章目录 写在前面球球大作战程序设计注意事项写在后面 写在前面 安装pygame的命令&#xff1a; pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pygame球球大作战 《球球大作战》是一款简单易上手、充满趣味性和竞技性的休闲手游。游戏的核心玩法可以用一句话概…

机器学习 | 基于Scikit-learn中手写数字集的交叉验证

在本文中&#xff0c;我们将讨论交叉验证及其在手写数字集上的使用。此外&#xff0c;我们将看到使用手写数字集的代码实现。 什么是交叉验证&#xff1f; 手写数字集的交叉验证将允许我们选择最佳参数&#xff0c;避免过度拟合训练数据集。它是一个试验的尝试程序&#xff0…

【Python】Tkinter模块(巨详细)

专栏文章索引&#xff1a;Python 有问题可私聊&#xff1a;QQ&#xff1a;3375119339 目录 一、窗口设计 1.创建窗口 2.窗口属性 3.窗口位置 4.Widget 一、窗口设计 1.创建窗口 实例-创建空白窗口&#xff1a; from tkinter import * # 导入tkinter模块win Tk() # 通…

算法(二分查找)

我们有三种方式可以使用二分查找 1.朴素的二分查找&#xff0c;这种方式可能存在局限性 2.查找左边界的二分查找 3.查找右边界的二分查找 1.二分查找 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums…

JVM调优参数介绍

堆配置 -Xms:初始堆大小 -Xms&#xff1a;最大堆大小 -XX:NewSizen:设置年轻代大小 -XX:NewRation:设置年轻代和年老代的比值。如&#xff1a;为3表示年轻代和年老代比值为1&#xff1a;3&#xff0c;年轻代占整个年轻代年老代和的1/4 -XX:SurvivorRation:年轻代中Eden区与…

英语学习笔记-元音

元音 什么是元音呢&#xff1f;简单来说就是&#xff0c;在发音时&#xff0c;气流非常通畅&#xff0c;没有阻碍&#xff0c;想发多大声都可以。 元音分为&#xff1a; 单元音双元音 总共有20个元音 如何发音 根据上图&#xff0c;发音可以分为两类&#xff1a; 黑色部分…

链式二叉树经典OJ题目(二)

目录 结构体及头文件&#xff1a; 1.二叉树的前序遍历 题目描述&#xff1a; 思路分析&#xff1a; 源码&#xff1a; 2.二叉树的翻转 题目描述&#xff1a; 思路分析&#xff1a; 源码&#xff1a; 3.另一颗子树 题目描述&#xff1a; 思路分析&#xff1a; 源码&…

00-JAVA基础-动态编译

动态编译 JAVA 6 引入了动态编译机制。Java 动态编译是指在运行时将Java源代码编译成可执行的字节码。这通常使用Java的内置编译器API javax.tools.JavaCompiler 来实现。 动态编译的应用场景 可以做一个浏览器编写java代码&#xff0c;上传服务器编译和运行的在线测评系统服…

我为什么会选择Vim来开发Go项目及Vim IDE安装配置和操作

你好&#xff0c;我是孔令飞&#xff0c;字节跳动云原生资深研发、前腾讯云原生技术专家。《企业级 Go 项目开发实战》、《从零开发企业级 Go 应用》作者&#xff0c;欢迎加入 孔令飞的云原生实战营&#xff0c;助你进阶 Go 云原生高级开发工程师。 作为一名 Golang 开发&…

我的需求分析方法论

或网上看了无数博客文章、技术视频&#xff0c;或购买金装版本技术书籍&#xff0c;看过无数原理原则、各种各样经典方法论&#xff0c;真正在实际开发工作中&#xff0c;本能去遵守和执行的又留下多少呢。 启动一个新系统时&#xff0c;我们可能还会去花些时间遵循这些原理原则…

前端学习之DOM编程-docmument对象、操作DOM对像内容、操作DOM对象属性方式、操作DOM对象的样式

docmument对象 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>document对象</title> </head> <body><div id"container" nameparent><ul name"parent&qu…

k8s CNI Calico 网络模式总结

目录 calico架构图 IPIP模式下的架构图 calico 核心组件 Overlay 网络模式&#xff1a; Pod IP对外暴露 不对外暴露&#xff1a; 实现对外暴露的方法&#xff1a; overlay模式下的网络MTU Iptables & ipvs overlay的主要缺点&#xff1a; Full-mesh Unoverla…