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

【LeetCode】每日一题(3)

目录

题目:1234. 替换子串得到平衡字符串 - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过啦!!!

写在最后:


题目:1234. 替换子串得到平衡字符串 - 力扣(Leetcode)

题目的接口:

class Solution {
public:int balancedString(string s) {}
};

解题思路:

这个题目就是让我们求出需要替换子串的最小长度,

我也想不出什么牛逼的解法,

所以就老老实实用哈希和滑动窗口来做,

然后控制一下边界,

具体思路就是:

1. 用一个哈希map存放原字符串以及每个字符的个数,

2. 然后实现一个是否需要替换的的函数,

3. 最后用滑动窗口的思想:

匹配不了 j 就加加,

j 遇到对应字符,该字符就减减,

匹配成功记录下来,然后让 i 加加,看看还有没有更少的替换次数。

i 遇到对应字符,该字符就加加,

直到 j 到边界,且比配失败,将记录的最少的替换次数返回即可。

代码:

class Solution {
public://判断字符串是否平衡bool is_balance(int m, unordered_map<char, int>& mp){for(const auto& it : mp){//如果字符个数大于n/4,当然不平衡if(it.second > m){return false;}}//字符个数都等于n/4,平衡了return true;}int balancedString(string s) {int n = s.size();int m = n / 4;//建一个哈希mapunordered_map<char, int> mp;//把字符都存进去for(char e : s){mp[e]++;}//用这个判断函数判断是否已经匹配成功if(is_balance(m, mp)){return 0;}//这里创建ret为一个很大的数,用来作为初始的比较数int i = 0, j = 0, ret = INT_MAX, breakcnt = 0;//滑动窗口[i, j) while(i < n){//如果平衡,动i,看看还有没有更优解if(is_balance(m, mp)){int tmp = j - i;//记录最小替换次数ret = min(ret, tmp);//下标i离开了s[i],让该字符数量++(因为不替换这个字符了)mp[s[i]]++;i++;}else{if(j < n)//j到边界就停下来{//下标j往后移动,让该字符数量--(在滑动窗口内的字符是要被替换的)mp[s[j]]--;j++;}else//j到边界了{breakcnt++;//先别直接break,让窗口再匹配一次,看看还有没有更优解//如果没有,第二次到这里就break。if(breakcnt > 1){break;}}}}//返回记录的最小替换次数return ret;}
};

过啦!!!

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果喜欢本文的话,欢迎点赞和评论,写下你的见解。

如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。

之后我还会输出更多高质量内容,欢迎收看。

相关文章:

【LeetCode】每日一题(3)

目录 题目&#xff1a;1234. 替换子串得到平衡字符串 - 力扣&#xff08;Leetcode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 写在最后&#xff1a; 题目&#xff1a;1234. 替换子串得到平衡…...

websocket学习

1.什么是websocket 1&#xff09;首先websocket和http一样&#xff0c;是一种网络通信协议&#xff0c;来自HTML5的特性&#xff1b; 2&#xff09;他可以使客户端和服务端进行双工通信&#xff0c;简单来说&#xff0c;就是双向通信&#xff1a;比如我们熟悉的http协议&…...

Java面试题及答案整理汇总(2023最新版)

前言 面试前还是很有必要针对性的刷一些题&#xff0c;很多朋友的实战能力很强&#xff0c;但是理论比较薄弱&#xff0c;面试前不做准备是很吃亏的。这里整理了很多面试常考的一些面试题&#xff0c;希望能帮助到你面试前的复习并且找到一个好的工作&#xff0c;也节省你在网…...

公司来了个卷王,我愿称之为王中王,让人崩溃

前几天我们公司一下子也来了几个新人&#xff0c;这些年前人是真能熬啊&#xff0c;本来我们几个老油子都是每天稍微加会班就打算走了&#xff0c;这几个新人一直不走&#xff0c;搞得我们也不好走。2023年春招就要开始了&#xff0c;最近内卷严重&#xff0c;各种跳槽裁员&…...

波奇学c语言:代码的编译和链接

test.c&#xff08;源文件&#xff09;->编译->test.obj&#xff08;目标文件&#xff09;->链接->test.exe&#xff08;可执行文件&#xff09;编译1.预编译&#xff08;预处理&#xff09;&#xff1a;text.c->text.i使用gcc -E test.c 进行停止预处理指令&am…...

计算机网络原理--传输层协议(TCP协议十大特性)

目录 1.认识TCP协议 TCP的协议段格式 2. 确认应答机制 3.超时重传 4.连接管理 <...

nvm控制node版本

安装 nvm 1、下载 nvm 官网安装包&#xff1a; github 选择 nvm-setup.exe 下载 2、安装 1、选择 nvm 安装目录&#xff08;可自定义&#xff09; 2、选择 node 安装目录&#xff08;如有安装过&#xff0c;可以选择以前安装目录&#xff0c;可 cdm 输入 where node 查看原nod…...

从0到1一步一步玩转openEuler--13 openEuler用户组管理

文章目录13.1 创建用户组13.1.1 groupadd命令13.1.2 用户组信息文件13.1.3 创建用户组实例13.2 修改用户组13.2.1 修改GID13.2.2 修改用户组名13.3 删除用户组13.4 将用户加入用户组或从用户组中移除13.5 切换用户组在Linux中&#xff0c;每个普通用户都有一个账户&#xff0c;…...

知不知道什么叫米筐量化?怎么来的?

现在量化市场范围越来越大&#xff0c;各种量化系统也是普遍性的了&#xff0c;不过米匡量化这个开发系统通常是由交易接口的专业开发团队开发的的结果&#xff0c;那么米匡量化的终端又是是怎么开发成功的呢&#xff1f;首先&#xff0c;我们可以从api接口的调用来了解&#x…...

Urho3D 事件Events

在脚本中&#xff0c;子系统通过以下全局财产可用&#xff1a;时间、文件系统、日志、缓存、网络、输入、ui、音频、引擎、图形、渲染器、脚本、控制台、debugHud、数据库。请注意&#xff0c;由于WorkQueue和Profiler的低级性质&#xff0c;它们不可用于脚本。 事件本身不需要…...

Rust学习入门--【8】复合类型

复合类型&#xff08;compound type&#xff09; 可以将多个不同类型的值组合为一个类型。 Rust中提供了两种内置的复合数据类型&#xff1a;元组&#xff08;tuple&#xff09;和数组&#xff08;array&#xff09;。 元组类型 元组是一个具有 固定长度 的数据集合 —— 无…...

【整理六】

1、props和state相同点和不同点&#xff1f;render方法在哪些情况下会执行&#xff1f; props是一个从外部传进组件的参数&#xff0c;由于React具有单向数据流的特性&#xff0c;所以他的主要作用是从父组件向子组件中传递数据&#xff0c;它是不可改变的&#xff0c;如果想要…...

Ubuntu20.04安装MySQL5.7与远程连接

一、安装MySQL5.7 1.更换镜像源 sudo cp /etc/apt/sources.list /etc/apt/sources.list.old #备份原来的文件 sudo vim /etc/apt/sources.list #修改sources.list文件配置文件内容如下所示&#xff1a; # 清华镜像源 deb https://mirrors.tuna.tsinghua.edu.cn/ubu…...

【yolov5】首次尝试目标检测利用prompt(完整操作流程)

1、打开prompt 2、切换到pytorch所在环境 conda activate freezing我的环境名是freezing&#xff0c;这里根据自己环境名去激活切换 3、进入到yolov5项目所在路径 激活完环境后立即执行指令当然是无效的&#xff0c;首先要进入到你的项目目录 首先看一下自己的项目在那个位…...

三大指标继续狂飙!重庆啤酒:不惧强弱分化加剧,深耕高端市场

十多年前&#xff0c;重庆啤酒因为9个跌停而被一片唱衰&#xff0c;资本市场经典的“关灯吃面”典故自此出现&#xff0c;被股民沿用至今。不过自2020年&#xff0c;重庆啤酒开始逆转走势&#xff0c;股价连续上涨。2021年重庆啤酒营收突破百亿大关&#xff0c;净赚11.66亿元&a…...

MySQL数据库14——更新和删除数据

SQL里面使用UPDATE更新数据&#xff0c;删除使用DELETE语句。 Mysql要修改一下设置&#xff0c;才能更新&#xff1a; 在左上角菜单栏里面选择偏好栏&#xff0c;取消下面这个红框的勾选 更新单个字段的数据 如果运行环境为MySQL 则使用以下语句进行备份。 CREATE TABLE stu…...

Java面试——MyBatis篇

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...

C++的 new 和 delete

文章目录一、new 和 delete 的使用二、operator new 和 operator delete 函数三、new 和 delete 的实现原理四、申请空间和释放空间应配套使用五、定位 new 表达式六、malloc/free 和 new/delete 的区别C语言的动态内存管理函数(malloc、calloc、realloc、free) 虽然可以继续在…...

MySQL 事务原理

文章目录1、事务1.1、ACID 特性1.1.1、原子性undo log1.1.2、一致性1.1.3、* 隔离性1.1.4、持久性redo log1.2、事务控制语句2、隔离级别2.1、隔离级别的分类2.1.1、读未提交 RU2.1.2、读已提交 RC2.1.3、可重复读 RR2.1.4、串行化 SC2.2、并发事务读异常2.2.1、* 脏读2.2.2、*…...

软件测试面试自我介绍/项目介绍居然还有模板?我要是早点发现就好了

目录 1、自我介绍 2、项目介绍 2.1、最全电商项目介绍 2.2、电商项目介绍 2.3、在线教育项目介绍 2.4、互联网金融项目介绍 总结 1、自我介绍 以XXX简历来举例&#xff08;参照下面的案例&#xff0c;编写你的自我介绍&#xff0c;框架就是&#xff1a;我是谁&#xff0…...

ElementUI Transfer穿梭框数据回填全攻略:编辑时如何优雅地还原选中状态?

ElementUI Transfer穿梭框数据回填实战&#xff1a;编辑场景下的状态还原艺术 在后台管理系统开发中&#xff0c;权限配置、内容关联等场景频繁使用穿梭框组件。ElementUI的Transfer组件凭借直观的双栏设计和丰富的API&#xff0c;成为这类需求的首选解决方案。但许多开发者在编…...

Midjourney油彩风格进阶必修课:用--no shadow, --iw 2.0, --style raw构建可控厚涂质感(附Gaussian噪声注入对照表)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney油彩风格的美学本质与技术定位 油彩风格&#xff08;Oil Painting Style&#xff09;在 Midjourney 中并非简单滤镜叠加&#xff0c;而是通过语义引导、纹理建模与隐空间解耦共同作用形成的高…...

从‘能用’到‘优雅’:Python函数设计的3个坏味道与5个重构技巧(附代码对比)

从‘能用’到‘优雅’&#xff1a;Python函数设计的3个坏味道与5个重构技巧&#xff08;附代码对比&#xff09; 在Python开发中&#xff0c;函数是最基本的代码组织单元。许多开发者能够快速实现功能&#xff0c;却往往忽视了函数设计的质量。本文将揭示三种典型的函数设计&qu…...

【ElevenLabs企业级语音AI落地指南】:20年音视频架构师亲授——3大合规陷阱、4类集成断点、1套可审计部署框架

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs Enterprise方案全景认知 ElevenLabs Enterprise 是面向中大型组织构建的语音合成与语音智能平台&#xff0c;提供高保真、低延迟、多语言、可定制的语音生成能力&#xff0c;并深度集成企业…...

ARM DAP调试架构核心机制与实践指南

1. ARM调试访问端口(DAP)架构解析调试访问端口(Debug Access Port, DAP)是ARM调试架构中的核心组件&#xff0c;它作为调试器与芯片内部调试资源的桥梁&#xff0c;提供了标准化的访问接口。DAP的设计遵循ARM Debug Interface v5.1(ADIv5.1)规范&#xff0c;支持两种物理接口协…...

暗黑破坏神2存档编辑器:d2s-editor网页版深度体验指南

暗黑破坏神2存档编辑器&#xff1a;d2s-editor网页版深度体验指南 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 想要自由定制暗黑破坏神2的角色成长路径&#xff0c;却苦于找不到合适的工具&#xff1f;d2s-editor作为一款基于…...

从信息学奥赛真题到项目实战:C++浮点数精度那些坑,你的double真的够用吗?

从信息学奥赛真题到项目实战&#xff1a;C浮点数精度那些坑&#xff0c;你的double真的够用吗&#xff1f; 在信息学奥赛的赛场上&#xff0c;一个看似简单的多项式计算题可能让许多选手栽跟头——不是算法思路不对&#xff0c;而是浮点数精度处理不当导致答案偏差。这种问题在…...

2026届学术党必备的降重复率平台横评

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 1. 在学术写作这个特定领域里&#xff0c;合理运用AI工具能切实有效提升文献检索、大纲构建…...

DICOM文件里到底藏了什么?手把手教你用Python拆解CT/MRI影像的‘身份证’

DICOM文件解析&#xff1a;用Python揭开医学影像的"数字基因密码" 当医生在CT或MRI设备前操作时&#xff0c;机器输出的不仅仅是黑白灰阶的图像&#xff0c;更是一套完整的数字档案。这套档案以DICOM格式封装&#xff0c;就像医学影像的"数字基因"&#xf…...

告别手工账!用SAP自动记账处理采购价差与发票价差(附MIRO/MIGO操作截图)

SAP自动记账实战&#xff1a;采购价差与发票价差的智能处理方案 1. 采购业务中的价格差异痛点 财务部门每月最头疼的莫过于月底对账时发现采购订单价格、收货价格和发票价格三者不一致。传统手工记账模式下&#xff0c;财务人员需要反复核对采购订单、收货单和发票&#xff0c;…...