Leetcode 340. 至多包含 K 个不同字符的最长子串

article/2025/9/12 17:45:33

1.题目基本信息

1.1.题目描述

给你一个字符串 s 和一个整数 k ,请你找出 至多 包含 k 个 不同 字符的最长子串,并返回该子串的长度。

1.2.题目地址

https://leetcode.cn/problems/longest-substring-with-at-most-k-distinct-characters/description/

2.解题方法

2.1.解题思路

滑动窗口

2.2.解题步骤

第一步,构建维护变量。left,right俩指针维护一个滑动窗口;map_维护滑动窗口中每个字符的最右侧的字符串的索引;currentLength维护当前的不同字符子串的长度

第二步,滑动窗口进行滑动,更新currentLength和maxLength

3.解题代码

python代码

class Solution:# 重点: 双指针+map记录滑动窗口内各字符的最右侧索引# 注意: 区分maxLength和currentLengthdef lengthOfLongestSubstringKDistinct(self, s: str, k: int) -> int:if k==0:return 0length=len(s)# 第一步,构建维护变量。left,right俩指针维护一个滑动窗口;map_维护滑动窗口中每个字符的最右侧的字符串的索引;currentLength维护当前的不同字符子串的长度left,right=0,0map_={}currentLength=0# 第二步,滑动窗口进行滑动,更新currentLength和maxLengthmaxLength=1for i in range(length):map_[s[i]]=iright=iif len(map_)>k:                # 删除最小索引的字符minIndex=min(map_.values())for item in map_.copy().items():if item[1]==minIndex:# 更新滑动窗口左侧指针left=map_[item[0]]+1del map_[item[0]]breakcurrentLength=right-left+1else:currentLength+=1maxLength=max(maxLength,currentLength)return maxLength

4.执行结果


http://www.hkcw.cn/article/MrBLqeTmuN.shtml

相关文章

历年中南大学计算机保研上机真题

2025中南大学计算机保研上机真题 2024中南大学计算机保研上机真题 2023中南大学计算机保研上机真题 在线测评链接:https://pgcode.cn/school 进制转换 题目描述 请写出一段程序,将十进制数字转为八进制。 输入格式 第一行输入 T T T ( 1 ≤ T ≤…

【js逆向】某某省过验证码逆向

查看响应 查看验证码包 send里面就是载荷的密文 向上跟栈 进入到i里面 找到params的加密处 断点,刷新 提示少扣取 报错:st is not defined 全部扣完后发现不报错但是没输出: 一个难以发觉的错误,大量扣取,不容易被发现…

土耳其总统:支持俄乌代表团的谈判继续推进

当地时间5月30日,土耳其总统埃尔多安与乌克兰总统泽连斯基通电话。双方讨论了两国双边关系以及地区与全球局势。△土耳其总统埃尔多安(资料图)埃尔多安在对话中表示,土耳其将继续努力推动乌克兰与俄罗斯之间实现公正与持久的和平。土耳其支持两国代表团在伊斯坦布尔开启的谈…

下一代液晶显示底层技术与九天画芯的技术突围

一、液晶产业:撑起数字经济的显示脊梁 (一)全球显示市场的核心支柱 作为电子信息产业的战略基石,液晶显示(LCD)占据全球平板显示市场超 60% 的份额,2022 年全球市场规模达 782.41 亿元&#xf…

工控机安装lubuntu系统

工控机安装lubuntu系统指南手册 1. 准备 1个8G左右的U盘 下载Rufus: Index of /downloads 下载lubuntu系统镜像: NJU Mirror Downloads – Lubuntu 下载Ventoy工具: Releases ventoy/Ventoy GitHub 下载后,解压&#…

完整解析 Linux Kdump Crash Kernel 工作原理和实操步骤

完整解析 Linux Kdump Crash Kernel 工作原理和实操步骤 一、前言 在使用 Linux 操作系统进行内核开发或者系统维护时,内核 panic 是最常见的系统崩溃环节。如果想要在内核崩溃后立即分析环境和输出内核内存 dump,Kdump crashkernel 是最接近完美的解…

day 25 异常处理

异常处理机制 Python 的异常处理机制赋予程序强大的容错能力。当程序在运行时遇到意外情况(即异常),它不会直接崩溃,而是可以被设计成优雅地处理错误,或继续执行后续逻辑,或按可控方式结束。 在异常发生时…

智能流体仿真软件AICFD 2025R1新版本功能介绍

智能流体仿真软件AICFD是天洑软件自主研发的一款通用型智能热流体仿真工具,其核心代码拥有完全自主知识产权。该软件在业界率先引入人工智能技术,高效解决工业级流动、传热、多相流、噪声及燃烧等复杂仿真问题。 图1 AICFD软件界面 一、版本更新介绍 A…

数据结构之队列:原理与应用

一、基本原理 队列是一种特殊的线性表队列是一个有序表(可以用数组或链表实现)遵循“先来先服务”的原则,它只允许在表的前端(队头)进行删除操作,在表的后端(队尾)进行插入操作 (一) 核心操作 入队&…

windows下安装docker、dify、ollama

一、docker安装 镜像源配置 {"builder": {"gc": {"defaultKeepStorage": "10GB","enabled": true}},"experimental": true,"registry-mirrors": ["https://docker.m.daocloud.io","ht…

mysql隐式转换会造成索引失效的原因

现在我们看一个例子 比如现在我有一张表叫做test 涉及的字段有id code name age address id 是int数值类型 code 是varchar字符串类型 name 是varchar字符串类型 age是int 数值类型 address是varchar 字符串类型 创建语句: CREATE TABLE test ( id INT …

鲲鹏Arm+麒麟V10,国产化信创 K8s 离线部署保姆级教程

Rainbond V6 国产化部署教程,针对鲲鹏 CPU 麒麟 V10 的离线环境,手把手教你从环境准备到应用上线,所有依赖包提前打包好,步骤写成傻瓜式操作指南。别说技术团队了,照着文档一步步来,让你领导来都能独立完成…

Python训练营---Day40

知识点回顾: 彩色和灰度图片测试和训练的规范写法:封装在函数中展平操作:除第一个维度batchsize外全部展平dropout操作:训练阶段随机丢弃神经元,测试阶段eval模式关闭dropout 作业:仔细学习下测试和训练代码…

LeetCode 高频 SQL 50 题(基础版)之 【连接】部分 · 下

前五道题&#xff1a;LeetCode 高频 SQL 50 题&#xff08;基础版&#xff09;之 【连接】部分 上 题目&#xff1a;577. 员工奖金 题解&#xff1a; select r.name,b.bonus from Employee r left join Bonus b on r.empIdb.empId where b.bonus <1000 or b.bonus is nul…

C++八股 —— 手撕线程池

文章目录 一、背景二、线程池实现1. 任务队列和工作线程2. 构造和析构函数3. 添加任务函数4. 完整代码 三、阻塞队列实现1. 基础队列2. 升级版队列 四、测试代码五、相关问题六、其他实现方式 来自&#xff1a;华为C一面&#xff1a;手撕线程池_哔哩哔哩_bilibili 华为海思&am…

半导体厂房设计建造流程、方案和技术要点-江苏泊苏系统集成有限公司

半导体厂房设计建造流程、方案和技术要点-江苏泊苏系统集成有限公司 半导体厂房的设计建造是一项高度复杂、专业性极强的系统工程&#xff0c;涉及洁净室、微振动控制、电磁屏蔽、特殊气体/化学品管理等关键技术。 一、设计建造流程&#xff1a; 1.需求定义与可行性分析 &a…

gitLab 切换中文模式

点击【头像】--选择settings 选择【language】,选择中文&#xff0c;点击【保存】即可。

Redis 常用数据结构详解与实战应用

在当今互联网高速发展的时代&#xff0c;数据的存储和处理效率至关重要。Redis 作为一款高性能的内存数据库&#xff0c;凭借其丰富的数据结构和出色的性能&#xff0c;成为了众多开发者的首选。本文将深入探讨 Redis 常用的数据结构&#xff0c;并结合实际应用场景&#xff0c…

leetcode2221. 数组的三角和-medium

1 题目&#xff1a;数组的三角和 官方标定难度&#xff1a;中 给你一个下标从 0 开始的整数数组 nums &#xff0c;其中 nums[i] 是 0 到 9 之间&#xff08;两者都包含&#xff09;的一个数字。 nums 的 三角和 是执行以下操作以后最后剩下元素的值&#xff1a; nums 初始…

PPIO × AstrBot:多平台接入聊天机器人,开启高效协同 | 教程

在消息平台接入专属聊天机器人&#xff0c;能快速生成精准答案&#xff0c;与项目管理、CRM等系统集成后&#xff0c;机器人还能根据任务进展自动建群、推送进度提醒&#xff0c;并精准相关人员&#xff0c;实现信息的高效传递。 AstrBot 是一个多平台聊天机器人及开发框架&…