day-62 每种字符至少取 K 个

news2024/9/27 20:52:54

在这里插入图片描述
思路
滑动窗口:改变思路,从左右两边取字符,是a b c三个字符至少被取k次,那么意味着如果我们知道字符串中a b c的出现个数,那么可以知道取走后剩下子串a b c的个数,问题转化为了求最长子串

解题过程
如果a b c个数分别为x y z,那么取走后剩下子串的a b c的个数分别小于等于x-k,y-k,z-k,所以我们需要找到最长的子串即可(该子串的a b c个数满足分别小于等于x-k,y-k,z-k)

Code

class Solution {
    public int takeCharacters(String s, int k) {
        int len=s.length();
        if(len<3*k) return -1;
        int a=0;
        int b=0;
        int c=0;
        for(int i=0;i<len;i++){
            if(s.charAt(i)=='a') a++;
            else if(s.charAt(i)=='b')b++;
            else c++;
        }
        a=a-k;
        b=b-k;
        c=c-k;
        if(a<0||b<0||c<0) return -1;
        int ta=0,tb=0,tc=0;
        int num=-1;
        for(int left=0,right=0;right<len;right++){
            if(s.charAt(right)=='a') ta++;
            else if(s.charAt(right)=='b') tb++;
            else tc++;
            if(ta<=a&&tb<=b&&tc<=c){}
            else{
                while((ta>a||tb>b||tc>c)&&left<=right){
                    if(s.charAt(left)=='a') ta--;
                    else if(s.charAt(left)=='b') tb--;
                    else tc--;
                    left++;
                }
            }
            num=Math.max(num,right-left+1);
        }
        if(num==-1) return -1;
        else return len-num;
    }
}

作者:菜卷
链接:https://leetcode.cn/problems/take-k-of-each-character-from-left-and-right/solutions/2932655/mei-chong-zi-fu-zhi-shao-qu-k-ge-by-ashi-dpm5/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

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

相关文章

java项目开发团队分配管理软件

需求&#xff1a; 该软件实现以下功能&#xff1a; 软件启动时&#xff0c;首先进入登录界面进行注册和登录功能。 当登陆成功后&#xff0c;进入菜单&#xff0c;首先就可以对开发人员账户和密码进行修改。 然后可以对开发人员进行增删改操作 人员添加成功后&#xff0c;根据菜…

传奇GEE引擎版本如何封挂?GEE引擎设置简单的封挂脚本教程

网关参数设置gee引擎封挂脚本 1、打开M2-选项-参数设置-游戏速度 把所有的设置限速关闭 2、打开M2-选项-客户端设置-内挂控制-速度控制&#xff1a;移动速度 攻击速度 魔法速度 设置好参数&#xff0c;一旦设置不要修改 否则封挂网关参数需重新设置 打开M2-选项-功能设置-…

【C++算法】栈

删除字符中的所有相邻重复项 题目链接 删除字符中的所有相邻重复项https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/description/ 算法原理 代码展示 class Solution { public:string removeDuplicates(string s) {string ret;for(int i 0; i &l…

C# 的枚举(Enum)应用说明

一.Enum的定义&#xff1a; 枚举是一组命名整型的常量。枚举类型是使用 enum 关键字声明的&#xff0c;它是值类型。枚举包含自己的值&#xff0c;且不能继承或传递继承。 二.声明 enum 变量&#xff1a; 声明枚举的一般语法&#xff1a; enum <enum_name> { enumerati…

Harbor使用

文章目录 1、上传镜像1.1、在Harbor上创建一个项目1.2、docker添加安全访问权限1.3、推送docker镜像到该项目中1.3.1、登录到Harbor1.3.2、给镜像重新打一个标签1.3.3、推送镜像到Harbor中 2、拉取镜像2.1、先删掉原来的镜像2.2、执行拉取命令 1、上传镜像 需求&#xff1a;将…

[Python]什么是K-Means均值聚类算法?

K-Means均值聚类分析是一种无监督学习算法&#xff0c;用于将数据集分成k个簇&#xff08;cluster&#xff09;&#xff0c;其中每个簇的成员在某种意义上是相似的。算法的目标是找到质心&#xff08;centroid&#xff09;&#xff0c;使得每个点到其最近质心的距离之和最小。通…

【科研小小白】理解图片容量、像素、尺寸、分辨率各自含义、 像素、分辨率与实际尺寸之间的转换关系

理解图片容量、像素、尺寸、分辨率各自含义&#xff1a; 通过之前的学习&#xff0c;我们知道了图片有这4个参数&#xff0c;下面给大家总结一这下4个参数的具体含义。 1、容量&#xff08;占内存&#xff09;&#xff1a;是指图像文件的存贮空间&#xff0c;也就是文件的大小…

职场基本功:情绪管理的行动指南(前置情绪管理)

文章目录 引言情绪管理的目标情绪产生的阶段前置情绪管理避免情绪失控的技巧案例分析引言 成熟的职场人,必备的五项技能: 管理自己的情绪:职场需要你的行为是可控的,只有情绪是稳定的,其他人才能顺利地跟你展开协作。称赞他人:赞赏能让你获得一个友好的交流环境求助他人…

lte sss加扰序列c产生 MATLAB和c语言实现

参考3GPP 36.211 今日给大家介绍一下LTE SSS信号产生过程中加扰序列c的产生过程以及用MATLAB 和 c语言给大家实现一下&#xff1a; 加扰序列c产生过程如下&#xff1a; 1 首先产生公共的序列x的生成 X的初始值 两个加扰序列c0和c1 c语言实现 void lte_sss_gen_c(char *c,u…

Zlibrary安装包下载与使用

文章目录 Zlibrary安装包下载与使用一 写在前面网盘链接1 百度网盘链接2 夸克网盘链接3 阿里云盘 二 安装1 Windows系统2 安卓3 苹果电脑端4 Linux系统Ubantu的下载与安装 三 Zlibrary的使用四 写在最后 Zlibrary安装包下载与使用 2024年9月27日下午4点 一 写在前面 1 Zlibr…

智慧农业案例 (一)- 自动化机械

橙蜂智能公司致力于提供先进的人工智能和物联网解决方案&#xff0c;帮助企业优化运营并实现技术潜能。公司主要服务包括AI数字人、AI翻译、领域知识库、大模型服务等。其核心价值观为创新、客户至上、质量、合作和可持续发展。 橙蜂智农的智慧农业产品涵盖了多方面的功能&…

Ubuntu环境下字体安装

本文介绍Ubuntu环境下字体安装。 软件&#xff08;如Qt应用软件&#xff09;开发过程中经常会涉及到字体的选择&#xff0c;有时候Ubuntu环境下并没有我们想要的字体&#xff0c;本文介绍常用字体及在Ubuntu环境下如何安装。 1.常用开源字体 有些字体商用并不是免费的&#…

jQuery——表单选择器

本文分享到此结束&#xff0c;欢迎大家评论区相互讨论学习&#xff0c;下一篇继续分享jQuery中$常见工具的学习。

暴力与正常人体行为检测系统源码分享

暴力与正常人体行为检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Co…

高翔【自动驾驶与机器人中的SLAM技术】学习笔记(十)高翔书中的细节:参考链接;卫星导航;ESKF

一、 参考链接 我认真查找了好多地方:结果在最后一页。 作者GITHUB链接如下: https://github.com/gaoxiang12/slam_in_autonomous_driving 全书所有参考链接 :如下 1 https://www.sae.org/standards/content/j3016_202104 2 http://www.evinchina.com/articleshow-217.htm…

在线相亲系统:新时代的婚恋观与传统习俗的碰撞

随着互联网技术的发展&#xff0c;相亲交友平台已成为年轻人寻找伴侣的新方式。这些平台不仅改变了人们的社交习惯&#xff0c;也反映了当代婚恋观与传统习俗之间的碰撞与融合。开发h17711347205本文将探讨在线相亲系统是如何在尊重传统的基础上&#xff0c;为现代年轻人提供更…

年龄性别与手势识别系统源码分享

年龄性别与手势识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Comput…

Docekrfile和docker compose编写指南及注意事项

Dockerfile 基础语法 我们通过编写dockerfile,将每一层要做的事情使用语法固定下来&#xff0c;之后运行指令就可以通过docker来制作自己的镜像了。 构建镜像的指令&#xff1a;docker build /path -t imageName:tag 注意&#xff0c;docker build后的path必须是dockerfile…

什么是文件完整性监控(FIM)

组织经常使用基于文件的系统来组织、存储和管理信息。文件完整性监控&#xff08;FIM&#xff09;是一种用于监控和验证文件和系统完整性的技术&#xff0c;识别用户并提醒用户对文件、文件夹和配置进行未经授权或意外的变更是 FIM 的主要目标&#xff0c;有助于保护关键数据和…

贝锐洋葱头浏览器随时随地访问教务系统,轻松搞定选课

教育网的“拥堵”早已是老生常谈&#xff0c;学生数量庞大、上网时间集中、带宽有限&#xff0c;导致网络速度慢。尤其是从外部网络访问教育网时&#xff0c;更是因为跨运营商的缘故变得缓慢。 而学校内网也是类似的情况&#xff0c;课余时间和上课时间的网络使用情况差别巨大…