当前位置: 首页 > news >正文

字符串-至多包含K种字符的子串中最长子串(mid)

一、题目描述

二、解题思路

借鉴以下题目思想,使用双指针,外层循环右侧指针移动,内存循环左侧指针移动

字符串-最长不含重复字符的子字符串(mid)-CSDN博客文章浏览阅读622次,点赞17次,收藏4次。java刷题:求最长不含重复字符的子字符串,使用双指针结合题目要求,减少左指针的移动次数,降低程序执行复杂度,这个题目很好,值得好好理解。https://blog.csdn.net/hehe_soft_engineer/article/details/139320167题目要求K种字符,则设置一个规模大小为K的hashset,该hashset记录当前至多包含K种字符的子串所含的字符类型。

1.当hashset所含字符种类小于K时,右指针++。

2.当hashset所含字符种类等于K时:

        2.1当右指针指向的字符在hashset中,右指针++

        2.2当右指针指向字符不在hashset中,找到当前子字符串中最久未出现的字符,定位到字符位置,将左指针指向该字符后一个位置,右指针++,以实现更新至多包含K种字符的子串。

 3.如果当前子串长度变长了,则更新记录最长长度的变量。

三、代码实现

import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param s string字符串 * @param k int整型 * @return int整型*/public int longestSubstring (String s, int k) {// 设置left和right双指针int left=0,right=0;HashSet<Character> charset=new HashSet<>();charset.add(s.charAt(0));int maxLen=0;for(;right<s.length();right++){if(charset.contains(s.charAt(right))){//此时不做操作}else{if(charset.size()<k){//当前字符种类并没有达到k,添加字符种类charset.add(s.charAt(right));}else{//此时需要从右侧开始找到第k次读取的字符(替换出set)int icounter=0;int leftdeletIndex=right-1;HashSet<Character> tmpcharset=new HashSet<>();while(leftdeletIndex>=left){if(!tmpcharset.contains(s.charAt(leftdeletIndex))){tmpcharset.add(s.charAt(leftdeletIndex));}if(tmpcharset.size()==k){//此时leftdeletIndex就是需要移除的字符tmpcharset.clear();break;}leftdeletIndex--;}left=leftdeletIndex+1;charset.remove(s.charAt(leftdeletIndex));charset.add(s.charAt(right));}}maxLen=maxLen>(right-left+1)?maxLen:(right-left+1);}return maxLen;}
}

四、刷题链接

至多包含K种字符的子串_牛客题霸_牛客网

相关文章:

字符串-至多包含K种字符的子串中最长子串(mid)

一、题目描述 二、解题思路 借鉴以下题目思想&#xff0c;使用双指针&#xff0c;外层循环右侧指针移动&#xff0c;内存循环左侧指针移动 字符串-最长不含重复字符的子字符串(mid)-CSDN博客文章浏览阅读622次&#xff0c;点赞17次&#xff0c;收藏4次。java刷题&#xff1a;…...

Docker从安装开始精通

从虚拟机到容器 1.环境配置的难题 软件开发最大的麻烦事之一&#xff0c;就是环境配置。用户计算机的环境都不相同&#xff0c;你怎么知道自家的软件&#xff0c;能在那些机器跑起来&#xff1f; 用户必须保证两件事&#xff1a;操作系统的设置&#xff0c;各种库和组件的安装…...

MFC:初步理解序列化与反序列化(含代码实现)

序列化与反序列化是MFC将对象数据以二进制数据流的形式进行存储和读取的机制&#xff0c;读、写的效率很高。通过序列化与反序列化&#xff0c;可以将程序中对象在内存中数据保存到文件 (磁盘) 或者从文件 (磁盘) 中读取到内存以恢复对象数据&#xff0c;从而实现程序对数据的持…...

python程序控制结构

文章目录 一、python程序控制结构介绍二、顺序结构2.1、print()函数2.2、end参数2.3、input()函数 三、选择结构3.1选择结构的用途 四、循环结构4.1循环结构的构造4.1.1、循环结构的三个要素4.1.2、循环结构的一个要求4.1.3、循环结构的一个关系 4.2、循环语句4.2.1、while语句…...

【GD32】04 - Timer定时器

GD32中的定时器 GD32E230中有七个定时器&#xff0c;六种类型&#xff0c;其中通用的L4版本有两个&#xff0c;其他类型的各一个。 那我们就以通用L4这个类型来敲代码&#xff0c;其他流程是通用的。 通用L4 虽然每种类型的定时器都有自己的结构框图&#xff0c;但是其实大差…...

Golang | Leetcode Golang题解之第123题买卖股票的最佳时机III

题目&#xff1a; 题解&#xff1a; func maxProfit(prices []int) int {buy1, sell1 : -prices[0], 0buy2, sell2 : -prices[0], 0for i : 1; i < len(prices); i {buy1 max(buy1, -prices[i])sell1 max(sell1, buy1prices[i])buy2 max(buy2, sell1-prices[i])sell2 m…...

Leetcode2028. 找出缺失的观测数据

Every day a Leetcode 题目来源&#xff1a;2028. 找出缺失的观测数据 解法1&#xff1a;模拟 统计当前 m 个元素的总和 curSum sum(rolls)&#xff0c;总共 mn 个元素和为 total (m n) * mean。 排除 2 种情况&#xff1a; total - curSum > 6 * n&#xff1a;n 个…...

如何在CentOS中合理划分磁盘空间以优化系统性能

目录 前言 理想的分区方案 为什么需要单独分区 安全性 性能 管理和维护 稳定性和可靠性 升级和兼容性 结论 前言 在进行CentOS系统的安装和配置时&#xff0c;合理划分磁盘空间是确保系统性能、安全性和易于管理的关键步骤。本文将探讨如何根据系统的硬件配置和预期用途…...

算法(十一)贪婪算法

文章目录 算法简介算法概念算法举例 经典问题 -背包问题 算法简介 算法概念 贪婪算法&#xff08;Greedy&#xff09;是一种在每一步都采取当前状态下最好的或者最优的选择&#xff0c;从而希望导致结果也是全局最好或者最优的算法。贪婪算法是当下局部的最优判断&#xff0c…...

Rust之函数式语言特性:迭代器和闭包(一):概述

开发环境 Windows 11Rust 1.78.0 VS Code 1.89.1 项目工程 这次创建了新的工程minigrep. 函数式语言特性:迭代器和闭包 Rust的设计从许多现有语言和技术中获得了灵感&#xff0c;其中一个重要影响是函数式编程。函数式编程通常包括通过在参数中传递函数、从其他函数返回函数、…...

配置资源管理

一 Secret Secret 是用来保存密码、token、密钥等敏感数据的 k8s 资源&#xff0c;这类数据虽然也可以存放在 Pod 或者镜像中&#xff0c;但是放在 Secret 中是为了更方便的控制如何使用数据&#xff0c;并减少暴露的风险。 1 有三种类型&#xff1a; kubernetes.io/service…...

unity2020打包webGL时卡进程问题

我使用的2020.3.0f1c1&#xff0c;打包发布WEB版的时候会一直卡到asm2wasm.exe这个进程里&#xff0c;而且CPU占用率90%以上。 即使是打包一个新建项目的空场景也是同样的问题&#xff0c;我尝试过一直卡在这里会如何&#xff0c;结果还真打包成功了。只是打包一个空场景需要20…...

云原生架构相关技术_3.无服务器技术

1.技术特点 1.1面向特定领域的后端云服务&#xff08;BaaS&#xff09; 随着以Kubernetes为代表的云原生技术成为云计算的容器界面&#xff0c;Kubernetes成为云计算的新一代操作系统。面向特定领域的后端云服务&#xff08;BaaS&#xff09;则是这个操作系统上的服务API&…...

Leetcode:Z 字形变换

题目链接&#xff1a;6. Z 字形变换 - 力扣&#xff08;LeetCode&#xff09; 普通版本&#xff08;二维矩阵的直接读写&#xff09; 解决办法&#xff1a;直接依据题目要求新建并填写一个二维数组&#xff0c;最后再将该二维数组中的有效字符按从左到右、从上到下的顺序读取并…...

Python 3 判断文件是否存在

1 使用os.path模块 import osfile_path hello.txtif os.path.exists(file_path):print(f"文件 {file_path} 存在。") else:print(f"文件 {file_path} 不存在。") 2 使用pathlib模块 from pathlib import Pathfile_path Path(word.txt)if file_path.ex…...

(深度学习记录)第TR3周:Transformer 算法详解

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 文本的输入处理中&#xff0c;transformer会将输入文本序列的每个词转化为一个词向量&#xff0c;我们通常会选择一个合适的长度作为输入…...

谷神前端组件增强:自定义列

初始化 $gp.customColumn {}initColumnPool /*** initColumnPool* 初始化列池* * param prefix 前缀* param length 长度* * return Array 列ID数组* */ function initColumnPool (prefix, length) {return Array.from({length}, (value, index) > prefix index) } self…...

31-ESP32-S3-WIFI篇-02 Event Group (事件标记组)

ESP32-S3-WIFI 事件标记组 介绍 在ESP32-S3的WiFi驱动程序中&#xff0c;事件标记组&#xff08;Event Group&#xff09;是一个非常重要的概念。它是FreeRTOS中的一种同步机制&#xff0c;用于在任务之间传递和同步事件。在WiFi驱动程序中&#xff0c;我们使用事件标记组来通…...

构建企业级AI私有知识库

一、引言 在当今竞争激烈的市场环境中&#xff0c;企业为了保持竞争优势&#xff0c;需要高效地管理和利用内部知识资源。构建一个企业级AI私有知识库&#xff0c;不仅可以集中存储和管理企业知识&#xff0c;还能通过人工智能技术实现知识的智能化处理和利用。本文将详细介绍…...

C语言王国——杨氏矩阵

目录 1. 引言 2. 了解杨氏矩阵 3. 思路分析 4. 代码 5. 总结 1. 引言 最近在做二维数组的训练的时候发现了一个很有意思的题&#xff1a; 一看这不是杨氏矩阵嘛&#xff0c;接下来就由姜糖我带大家了解一下这个著名的矩阵。 2. 了解杨氏矩阵 通过查阅百度得知&#xff1a; …...

如何快速掌握Mesa:Python多智能体建模的完整指南

如何快速掌握Mesa&#xff1a;Python多智能体建模的完整指南 【免费下载链接】mesa Mesa is an open-source Python library for agent-based modeling, ideal for simulating complex systems and exploring emergent behaviors. 项目地址: https://gitcode.com/gh_mirrors/…...

Grafana Dashboard权限精细化控制实战指南

1. Grafana权限控制基础&#xff1a;从入门到精通 刚接触Grafana时&#xff0c;我一度以为权限管理就是简单的"管理员能改、编辑者能看、查看者只能瞅瞅"。直到有一次&#xff0c;客户要求"开发团队能修改A仪表盘但不能碰B仪表盘&#xff0c;运维团队能看B但不能…...

AI皮衣设计新体验:The Leather Archive时尚杂志风界面实测

AI皮衣设计新体验&#xff1a;The Leather Archive时尚杂志风界面实测 1. 引言&#xff1a;当AI遇见时尚杂志 走进任何一家高端时尚杂志的编辑部&#xff0c;你会看到精心设计的版面、充满艺术感的排版和令人惊艳的视觉呈现。现在&#xff0c;这种专业级的时尚杂志体验被带入…...

C++ constexpr 在工程中的应用场景

C constexpr 在工程中的应用场景 在现代C开发中&#xff0c;constexpr关键字因其强大的编译时计算能力&#xff0c;逐渐成为提升性能与代码可维护性的利器。它允许开发者在编译期完成复杂的计算和初始化&#xff0c;从而减少运行时开销&#xff0c;同时增强代码的静态安全性。…...

WuliArt Qwen-Image Turbo部署案例:边缘计算设备(Jetson AGX Orin)适配进展

WuliArt Qwen-Image Turbo部署案例&#xff1a;边缘计算设备&#xff08;Jetson AGX Orin&#xff09;适配进展 1. 引言&#xff1a;当极速文生图遇上边缘AI 想象一下&#xff0c;你有一台强大的边缘计算设备&#xff0c;比如英伟达的Jetson AGX Orin&#xff0c;它被设计用于…...

实战应用:从零到一,使用快马构建资料更新内容管理系统的完整案例

实战应用&#xff1a;从零到一&#xff0c;使用快马构建资料更新内容管理系统的完整案例 最近接手了一个资料大全的版本更新管理需求&#xff0c;需要搭建一个简单高效的内容管理系统。经过一番摸索&#xff0c;我发现用InsCode(快马)平台可以快速实现这个功能&#xff0c;整个…...

如何快速解锁网易云音乐NCM格式:免费无损转换完整指南

如何快速解锁网易云音乐NCM格式&#xff1a;免费无损转换完整指南 【免费下载链接】ncmdump ncmdump - 网易云音乐NCM转换 项目地址: https://gitcode.com/gh_mirrors/ncmdu/ncmdump 你是否曾经从网易云音乐下载了喜爱的歌曲&#xff0c;却发现这些NCM格式文件无法在其他…...

面向高精度应用的数字控制PDH稳频电路设计与实现

1. 数字控制PDH稳频电路的核心价值 在原子钟、引力波探测这类需要亚赫兹级别频率稳定度的尖端实验中&#xff0c;激光稳频技术就像精密机械中的轴承——看似不起眼却决定着整个系统的性能上限。传统模拟PDH&#xff08;Pound-Drever-Hall&#xff09;电路虽然能提供MHz量级的反…...

RecyclerView 动态布局实战:ItemView 高宽自适应与多列切换

1. RecyclerView动态布局的核心挑战 在Android开发中&#xff0c;RecyclerView是最常用的列表控件之一。但很多开发者都会遇到这样的问题&#xff1a;如何让ItemView根据数据量动态调整高度和宽度&#xff1f;特别是在需要实现单列和多列布局自动切换的场景下&#xff0c;这个问…...

Matrix Motor Extension:四通道嵌入式电机驱动模块详解

1. 项目概述Matrix Motor Extension 是一款面向嵌入式控制场景的四通道直流电机驱动扩展模块&#xff0c;专为需要多轴独立运动控制的智能硬件平台设计。其核心定位并非通用型电机驱动板&#xff0c;而是作为主控系统&#xff08;如 STM32、ESP32、Raspberry Pi Pico 等&#x…...