【LeetCode2696】删除子串后的字符串最小长度
1、题目描述
【题目链接】
标签:栈 、字符串、模拟
难度:简单
给你一个仅由 大写 英文字符组成的字符串 s 。
你可以对此字符串执行一些操作,在每一步操作中,你可以从 s 中删除 任一个 “AB” 或 “CD” 子字符串。
通过执行操作,删除所有 “AB” 和 “CD” 子串,返回可获得的最终字符串的 最小 可能长度。
注意,删除子串后,重新连接出的字符串可能会产生新的 “AB” 或 “CD” 子串。
示例 1:
输入:s = “ABFCACDB”
输出:2
解释:你可以执行下述操作:
- 从 “ABFCACDB” 中删除子串 “AB”,得到 s = “FCACDB” 。
- 从 “FCACDB” 中删除子串 “CD”,得到 s = “FCAB” 。
- 从 “FCAB” 中删除子串 “AB”,得到 s = “FC” 。
最终字符串的长度为 2 。
可以证明 2 是可获得的最小长度。
示例 2:
输入:s = “ACBBD”
输出:5
解释:无法执行操作,字符串长度不变。
提示:
1 <= s.length <= 100
s 仅由大写英文字母组成
2、基本思路
这是一道简单的字符串处理的题目,可以用栈模型上述的删除的过程即可,值得注意的是,删除子串后,重新连接出的字符串可能会产生新的 “AB” 或 “CD” 子串。
下面是利用栈对示例 1 模拟的过程:
- 初始化栈空;
- 栈空,A入栈;
- 当前元素B,与栈顶元素A,构成子串AB,A出栈;
- 栈空,F入栈;
- 当前元素C,栈顶元素F,构不成子串,C入栈;
- 当前元素A,栈顶元素C,构不成子串,A入栈;
- 当前元素C,栈顶元素A,构不成子串,C入栈;
- 当前元素D,栈顶元素C,构成子串CD,C出栈;
- 当前元素B,栈顶元素A,构成子串AB,A出栈;
- 字符串元素遍历完毕,栈中元素的长度即为答案;
3、代码实现
int minLength(string s) {stack<char> st;for(int i = 0;i<s.length();++i){char c = s[i];if(st.empty())st.push(c);else{if(c=='D'&&st.top()=='C')st.pop();else if(c=='B'&&st.top()=='A')st.pop();elsest.push(c);}}return st.size();
}相关文章:
【LeetCode2696】删除子串后的字符串最小长度
1、题目描述 【题目链接】 标签:栈 、字符串、模拟 难度:简单 给你一个仅由 大写 英文字符组成的字符串 s 。 你可以对此字符串执行一些操作,在每一步操作中,你可以从 s 中删除 任一个 “AB” 或 “CD” 子字符串。 通过执行操作…...
VMware安装CentOS7虚拟机
VMware 安装 获取 VMware 安装包 下载地址:链接:https://pan.baidu.com/s/1ELR5NZa7rO6YVplZ1IUigw?pwdplz3 提取码:plz3 包括:当然,也可以自己去别的地方下载,WMware 版本都差不多,现在用的比…...
Linux第22步_安装CH340驱动和串口终端软件MobaXterm
开发板输出信息通常是采用串口,而计算机通常是USB接口,为了让他们之间能够交换数据,我们通常采用USB转串口的转换器来实现。目前市场上的串口转换器大多是采用CH340芯片来实现的,因此我们需要在计算中安装一个CH340驱动程序&#…...
Elasticsearch 地理空间搜索 - 远超 OpenSearch
作者:来自 Elastic Nathan_Reese 2021 年,OpenSearch 和 OpenSearch Dashboards 开始作为 Elasticsearch 和 Kibana 的分支。 尽管 OpenSearch 和 OpenSearch Dashboards 具有相似的血统,但它们不提供相同的功能。 在分叉时,只能克…...
USB micro输入口中三个问题详解——差分信号、自恢复保险丝SMD1210P050TF、电容滤波
前言:本文对USB micro输入口中遇见的三个问题进行详解:差分信号、自恢复保险丝SMD1210P050TF、电容滤波 目录: 差分信号 自恢复保险丝SMD1210P050TF 电容滤波 如下图,USB为U-F-M5DD-Y-1型号(9个引脚,除…...
mysql原理--undo日志1
1.事务回滚的需求 我们说过 事务 需要保证 原子性 ,也就是事务中的操作要么全部完成,要么什么也不做。但是偏偏有时候事务执行到一半会出现一些情况,比如: (1). 事务执行过程中可能遇到各种错误,比如服务器本身的错误&…...
Zookeeper系列(一)集群搭建(非容器)
系列文章 Zookeeper系列(一)集群搭建(非容器) 目录 前言 下载 搭建 Data目录 Conf目录 集群复制和修改 启动 配置示例 测试 总结 前言 Zookeeper是一个开源的分布式协调服务,其设计目标是将那些复杂的且容易出错的分…...
【高等数学之泰勒公式】
一、从零开始 1.1、泰勒中值定理1 什么是泰勒公式?我们先看看权威解读: 那么我们从古至今到底是如何创造出泰勒公式的呢? 由上图可知,任一无穷小数均可以表示成用一系列数字的求和而得出的结果,我们称之为“无穷算法”。 那么同理我们想对任一曲线来…...
奇异值分解在图形压缩中的应用
奇异值分解在图形压缩中的应用 在研究奇异值分解的工程应用之前,我们得明白什么是奇异值?什么是奇异向量? 奇异值与奇异向量 概念:奇异值描述了矩阵在一组特定向量上的行为,奇异向量描述了其最大的作用方向。 奇异值…...
C++深入学习之STL:1、容器部分
标准模板库STL的组成 主要由六大基本组件组成:容器、迭代器、算法、适配器、函数对象(仿函数)以及空间配置器。 容器:就是用来存数据的,也称为数据结构。 本文要详述的是容器主要如下: 序列式容器:vector、list 关联…...
Javascript——vue下载blob文档流
<el-table-column label"操作" fixed"right" width"150" showOverflowTooltip><template slot-scope"scope"><el-button type"text" v-has"stbsd-gjcx-down" class"edit-button" click&…...
C# 的SequenceEqual
SequenceEqual 是 LINQ 扩展方法之一,用于比较两个序列(如数组、列表等)的元素是否相等。 该方法的详细定义如下: public static bool SequenceEqual<TSource>(this IEnumerable<TSource> first, IEnumerable<TS…...
第九部分 使用函数 (一)
目录 一、简介 二、函数的调用语法 一、简介 在 Makefile 中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具 有智能。make 所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数 的返回值可以当做变量来使用…...
【JUC进阶】14. TransmittableThreadLocal
目录 1、前言 2、TransmittableThreadLocal 2.1、使用场景 2.2、基本使用 3、实现原理 4、小结 1、前言 书接上回《【JUC进阶】13. InheritableThreadLocal》,提到了InheritableThreadLocal虽然能进行父子线程的值传递,但是如果在线程池中&#x…...
基于C++的ORM框架sqlpp11入门介绍(附MySQL运行实例)
基本介绍 sqlpp11 是 C 的类型安全的 SQL 模版库。 Sqlpp11的官方下载地址是, GitHub - rbock/sqlpp11: A type safe SQL template library for C 在这里,可以找到官方的详细介绍文档, https://github.com/rbock/sqlpp11/tree/main/docs…...
对写文章的想法
一些思考 思考初心现在错觉想说的话 最后 思考 在CSDN里面写文章已经快半年了啊,虽然更得不多,但每一篇都花费很多时间,写的时候能帮自己查漏补缺,这边找找资料补充一下,都能去拓展自己的知识面,让自己的文…...
Istio安装和基础原理
1、Istio简介 Istio 是一个开源服务网格,它透明地分层到现有的分布式应用程序上。 Istio 强大的特性提供了一种统一和更有效的方式来保护、连接和监视服务。 Istio 是实现负载平衡、服务到服务身份验证和监视的路径——只需要很少或不需要更改服务代码。它强大的控…...
C++核心编程——基于多态的企业职工系统
本专栏记录C学习过程包括C基础以及数据结构和算法,其中第一部分计划时间一个月,主要跟着黑马视频教程,学习路线如下,不定时更新,欢迎关注。 当前章节处于: ---------第1阶段-C基础入门 ---------第2阶段实战…...
Nginx服务安装
Nginx(发音为[engine x])专为性能优化而开发,其最知名的优点是它的稳定性和低系统资源消 耗,以及对HTTP并发连接的高处理能力(单台物理服务器可支持30000~50000个并发请求)。正因 为如此,大量提供社交网络、…...
微信小程序canvas画布实现矩形元素自由缩放、移动功能
一、获取画布信息并绘制背景 .whml <canvas class="canvas" type="2d" id="myCanvas" bindtouchstart="get_rect_touch_position" bindtouchmove="move_or_scale" bind:tap="finish_edit_check"/> 定义c…...
解锁Joplin无缝笔记体验:3大场景实现全平台知识管理自由
解锁Joplin无缝笔记体验:3大场景实现全平台知识管理自由 【免费下载链接】joplin Joplin 是一款安全笔记记录与待办事项应用,具备跨平台同步功能,支持 Windows、macOS、Linux、Android 和 iOS 平台。 项目地址: https://gitcode.com/GitHub…...
别再只盯着运放了:用跨阻放大器搞定光电传感器信号调理的完整指南
光电传感器信号调理实战:跨阻放大器设计与避坑指南 当你在昏暗的灯光下测试光电传感器时,是否曾被微弱的电流信号折磨得焦头烂额?作为嵌入式工程师,我曾在凌晨三点的实验室里,面对闪烁不定的示波器波形,才…...
C# WebSocket实战:5分钟搞定实时聊天应用(附完整源码)
C# WebSocket实战:5分钟构建高可靠实时聊天系统 实时通信已成为现代应用的核心需求之一。想象一下,当用户发送消息时,对方能立即看到;当股票价格波动时,交易界面实时更新;当多人协作编辑文档时,…...
企业级邮件系统自建指南:从技术选型到生产部署
企业级邮件系统自建指南:从技术选型到生产部署 【免费下载链接】james-project James Project是一个用于电子邮件服务器的开源软件。适用于需要为其邮件基础设施提供强大和可靠的邮件传输代理的企业和组织。具有可扩展性、灵活性和易于使用的特点。 项目地址: htt…...
避坑指南:RK3588 SD卡刷机时FAT32转EXT4的完整流程(含工具包)
RK3588大容量镜像烧写实战:突破FAT32限制的EXT4全流程解决方案 当你在RK3588开发板上尝试烧写超过4GB的Ubuntu或Debian镜像时,是否遇到过SD卡工具报错?这不是你的操作问题,而是FAT32文件系统的天然限制。本文将带你深入理解这一技…...
告别彻夜等待:SteamShutdown让游戏下载完成后自动关机的智能解决方案
告别彻夜等待:SteamShutdown让游戏下载完成后自动关机的智能解决方案 【免费下载链接】SteamShutdown Automatic shutdown after Steam download(s) has finished. 项目地址: https://gitcode.com/gh_mirrors/st/SteamShutdown 你是否也曾经历过这样的困扰&a…...
springboot+vue基于web的大学生课程排课管理系统设计
目录 功能模块分析后台管理系统(SpringBoot)前端系统(Vue) 技术实现要点 项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 功能模块分析 后台管理系统(SpringBoot&…...
从“玩概念”到“真落地”:AI智能体三大场景的突围之路
当行业不再为“大模型参数”狂欢,真正的价值开始浮现——客服自动化、内部知识库、办公Agent,正在成为AI智能体最先跑通商业闭环的三大场景。而决定成败的关键,已经从模型能力转向上下文设计、工具调用与反馈迭代。 2026年,大模型…...
保姆级教程:手把手配置Postern 3.1.2与Charles v4.6.4联动,实现安卓APP全局流量抓取
安卓移动端流量抓取实战:Postern与Charles深度配置指南 移动应用开发与安全测试中,流量抓取是分析网络行为、调试接口问题的核心技术。不同于简单的代理设置,当应用采用非标准通信协议或主动规避代理时,传统抓包方案往往失效。本文…...
s2-pro语音合成应用:法律文书语音播报——专业术语与标点精准处理
s2-pro语音合成应用:法律文书语音播报——专业术语与标点精准处理 1. 专业语音合成的法律场景需求 在法律行业中,文书语音播报有着特殊而严格的要求。传统语音合成技术在处理法律文书时常常面临以下挑战: 专业术语发音不准:如&…...
