395. 至少有 K 个重复字符的最长子串

news2024/11/24 0:53:46

395. 至少有 K 个重复字符的最长子串

在这里插入图片描述


C代码:滑动窗口 ---- 不是吧,阿sir,这也能滑?

// 返回滑动窗口的长度
// 满足条件的种类数量的可能为 [1, 26], 所以需要遍历26中情况的窗口长度
// 当 区间内所有种类数量 == 满足要求的种类数量,就记录窗口长度

// 滑动窗口移动判断条件、传统滑动窗口的条件针对简单模型
int longestSubstring(char* s, int k) {
    int ret = 0;
    int n = strlen(s);
    for (int t = 1; t <= 26; t++) { // 对26种情况从头到尾遍历一次滑动窗口
        int l = 0;
        int cnt[26];
        memset(cnt, 0, sizeof(cnt));
        int tot = 0;   // 区间所有的字符「种类数量」
        int sum = 0;  // 「出现次数不少于 k」的字符种类数量
        for (int r = 0; r < n; ++r) {  // 窗口右端点右移
            cnt[s[r] - 'a']++;
            if (cnt[s[r] - 'a'] == 1) { // 种类数量
                tot++;
            }
            if (cnt[s[r] - 'a'] == k) { // 种类数量,计一次
                sum++;
            }
            while (tot > t) {  // 滑动窗口的判断条件是啥?很关键!
                int t = s[l++] - 'a';  // 窗口左端点右移
                cnt[t]--;
                if (cnt[t] == 0) {  // 此种类消失
                    --tot;
                }
                if (cnt[t] == k - 1) { // 此种类数量不满足要求
                    --sum;
                }
            }
            if (tot == sum) {  // 区间内所有种类数量 == 满足要求的种类数量
                ret = fmax(ret, r - l + 1);
            }
        }
    }
    return ret;
}

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

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

相关文章

【Anaconda】安装及使用

知识目录 前言一、 Anaconda是什么二、为什么使用Anaconda三、安装步骤3.1 下载安装3.2 配置conda源 结语 前言 大家好&#xff01;我是向阳花花花花&#xff0c;本期给大家带来的是 Anaconda 安装及使用。 每日金句分享&#xff1a;故事不长&#xff0c;也不难讲。』—— 「…

深度学习(37)—— 图神经网络GNN(2)

深度学习&#xff08;37&#xff09;—— 图神经网络GNN&#xff08;2&#xff09; 这一期主要是一些简单示例&#xff0c;针对不同的情况&#xff0c;使用的数据都是torch_geometric的内置数据集 文章目录 深度学习&#xff08;37&#xff09;—— 图神经网络GNN&#xff08…

SpringCloudGateway配置跨域设置以及如何本地测试跨域

问题背景 有个服务A &#xff0c;自身对外提供服务&#xff0c;几个系统的前端页面也在调用&#xff0c;使用springboot 2.6.8开发的&#xff0c;自身因为有前端直接调用已经配置了跨域。 现在有网关服务&#xff0c;一部分前端通过网关访问服务A&#xff08;因为之前没有网关…

Android系统-ServiceManager2

目录 引言&#xff1a; 获取ServiceManager 流程图 注册系统服务 获取系统服务 引言&#xff1a; 注册或使用服务之前&#xff0c;需要通过ServiceManager这个DNS来找到对应的服务。那怎么找到ServiceManager呢&#xff1f; 怎么注册系统服务&#xff1f; 怎么获取系统…

分享一组天气组件

先看效果&#xff1a; CSS部分代码&#xff08;查看更多&#xff09;&#xff1a; <style>:root {--bg-color: #E9F5FA;--day-text-color: #4DB0D3;/* 多云 */--cloudy-background: #4DB0D3;--cloudy-temperature: #E6DF95;--cloudy-content: #D3EBF4;/* 晴 */--sunny-b…

Docker高级篇_DockerFile

目录 DockerFile简介构建DockerFile构建过程解析Docker执行Dockerfile的大致流程 DockerFile常用保留字指令FROMMAINTAINERRUNEXPOSEWORKDIRUSERENVVOLUMEADDCOPYCMDENTRYPOINT案例使用虚悬镜像 Docker微服务 DockerFile简介 Dockerfile是用来构建Docker镜像的文本文件&#x…

七、解析应用程序——枚举内容与功能

文章目录 1、web抓取2、发现隐藏内容2.1 蛮力技巧2.2 通过公布的内容进行推测2.3 利用公共信息 3、应用程序页面和功能路径4、发现隐藏参数 攻击应用程序的第一步是收集和分析与其有关的一些关键信息&#xff0c;以清楚了解攻击目标。解析过程首先是枚举应用程序的内容与功能&a…

HTML详解连载(2)

HTML详解连载&#xff08;2&#xff09; 专栏链接 [link](http://t.csdn.cn/xF0H3)下面进行专栏介绍 开始喽超链接作用代码示例解释经验分享 音频标签代码示例注意强调 视频标签代码示例注意强调 列表作用&#xff1a;布局内容排列整齐的区域。分类&#xff1a;无序列表&#x…

基于Googlenet深度学习网络的人员行为动作识别matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 1. 原理 1.1 深度学习与卷积神经网络&#xff08;CNN&#xff09; 1.2 GoogLeNet 2. 实现过程 2.1 数据预处理 2.2 构建网络模型 2.3 数据输入与训练 2.4 模型评估与调优 3. 应用领域…

Eclipse(STS)Enum 格式化配置

需求 枚举类 的字段&#xff0c;一般长度较小&#xff0c;格式化后&#xff0c;多个字段会变为一行。 需求&#xff1a;希望每个字段独立一行。 格式化后的样式&#xff0c;如下图所示&#xff1a; 配置 1. Windows - Preferences 2. Java-Formatter 如果没有自定义的格…

C++ 循环

有的时候&#xff0c;可能需要多次执行同一块代码。一般情况下&#xff0c;语句是顺序执行的&#xff1a;函数中的第一个语句先执行&#xff0c;接着是第二个语句&#xff0c;依此类推。 编程语言提供了允许更为复杂的执行路径的多种控制结构。 循环语句允许我们多次执行一个…

DVWA暴力破解高级模式宏爆破

先将安全等级调至高级&#xff0c;点击submit提交 浏览器开启bp代理 kali开启bp 工具&#xff0c;开启Proxy 点击Brute Force这个选项卡 bp拦截到请求的数据包 宏设置 如果是有的bp版本比较旧&#xff0c;在旧版本的上面菜单栏有一个Project options点击去选择Session&#xff…

Android系统-进程-Binder1-概述

目录 引言&#xff1a; 一次拷贝 Binder一次通信过程 应用启动中的binder交互 C/S模式&#xff1a; Binder COMMAND BWR数据结构&#xff1a; 引言&#xff1a; Android的binder是从openbinder发展过来的。包括了binder驱动&#xff0c;Native层&#xff0c;Java层。用…

【Matlab智能算法】RBF神经网络-遗传算法(RBF-GA)函数极值寻优——非线性函数求极值

上一篇博客介绍了GRNN-GA&#xff1a;GRNN神经网络遗传算法(GRNN-GA)函数极值寻优——非线性函数求极值&#xff0c;神经网络用的是GRNN神经网络&#xff0c;RBF神经网络&#xff08;径向基函数神经网络&#xff09;和GRNN神经网络有相似之处。本篇博客将GRNN神经网络替换成RBF…

安装istio和部署实例以及仪表盘

安装Istio 接下来我们将介绍如何在 Kubernetes 集群中安装 Istio&#xff0c;这里我们使用的是最新的 1.10.3 版本。 下面的命令可以下载指定的 1.10.3 版本的 Istio: ➜ ~ curl -L https://istio.io/downloadIstio | ISTIO_VERSION1.10.3 sh -如果安装失败&#xff0c;可以…

SolidWorks不能使用选择如允许此选择将生成有冲突的前后关系

SolidWorks不能使用选择如允许此选择将生成有冲突的前后关系 1 SolidWorks不能使用选择如允许此选择将生成有冲突的前后关系 1 SolidWorks不能使用选择如允许此选择将生成有冲突的前后关系 https://www.swrjzxw.com/1556.html SolidWorks装配体时 显示 不能使用选择如允许此选…

Linux 使用gdb调试C程序

一、gdb的一些基础命令 l&#xff1a;显示代码 l n&#xff1a;跳转到当前代码页的第n行的代码 l filename.c &#xff1a;n&#xff1a;跳转到filename.c文件的第n行代码 b 行号&#xff1a;加断点 info break&#xff1a;查看断点信息 delete 断点编号&#xff1a;删除断点 …

力扣 518. 零钱兑换 II

题目来源&#xff1a;https://leetcode.cn/problems/coin-change-ii/description/ C题解&#xff08;来源代码随想录&#xff09;&#xff1a; 这是一道典型的背包问题&#xff0c;一看到钱币数量不限&#xff0c;就知道这是一个完全背包。但本题和纯完全背包不一样&#xff0c…

天津大数据培训机构哪家好?大数据必备知识

随着我国互联网IT行业的发展&#xff0c;我们步入了大数据时代&#xff0c;现在市场上急需大量的大数据专业人才&#xff0c;发展空间大&#xff0c;从业范围广&#xff0c;学习大数据专业对未来还是很有帮助的。今天小编来带大家了解一下大数据的知识和学习方式&#xff0c;作…

Pygame 入门教程

1. Pygame简介 Pygame是一个基于Python的游戏开发库&#xff0c;它提供了一系列的工具和接口&#xff0c;使开发人员能够轻松地创建各种类型的游戏&#xff0c;包括2D游戏和简单的3D游戏。 在开始学习Pygame之前&#xff0c;您需要先安装Pygame库。您可以通过以下命令在命令行…