【每日一题】删除子串后的字符串最小长度

文章目录

  • Tag
  • 题目来源
  • 解题思路
    • 方法一:栈
  • 写在最后

Tag

【栈】【字符串】【2024-01-10】


题目来源

2696. 删除子串后的字符串最小长度


解题思路

方法一:栈

思路

按照题目要求需要移除字符串中的 “AB” 和 “CD” 子字符串,并且移除这两种字符之后可能还会出现这样的字符,于是考虑使用栈这种基本的数据结构。

当栈顶两个元素分别为 “AB” 或 “CD” 时,可以通过出栈来模拟移除操作。这样,后续的判断过程就是建立在已经删除元素的栈之上了。遍历完之后,返回栈的长度。

算法

class Solution {  
private:unordered_map<char, char> pairs;
public:int minLength(string s) {pairs['B'] = 'A';pairs['D'] = 'C';int ans = 0;stack<char> stk;for (int i = 0; i < s.size(); ++i) {if (stk.empty()) {stk.push(s[i]);continue;}char c = stk.top();if (c == pairs[s[i]]) {stk.pop();}else {stk.push(s[i]);}  }return stk.size();}
};

复杂度分析

时间复杂度: O ( n ) O(n) O(n) n n n 为字符串 s 的长度。

空间复杂度: O ( 1 ) O(1) O(1)


写在最后

如果您发现文章有任何错误或者对文章有任何疑问,欢迎私信博主或者在评论区指出 💬💬💬。

如果大家有更优的时间、空间复杂度的方法,欢迎评论区交流。

最后,感谢您的阅读,如果有所收获的话可以给我点一个 👍 哦。

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

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

相关文章

Clean Code读后总结——前进者的基石

前言 作为一个程序员&#xff0c;再职业生涯中会写很多很多万行代码。感觉学习写代码的过程很像学习写作的过程&#xff0c;写大型软件就是在写一本长篇小说&#xff0c;那么如何定义好的代码&#xff0c;感觉就像是问说怎么写出好的文章。 那么什么是好的代码呢&#xff1f;对…

Helix QAC 2023.4 新版支持C++20语言,带来更多性能提升!

Helix QAC 2023.4 新增功能 Helix QAC 2023.4全面支持MISRA C:2023规则&#xff0c;涵盖100%的指南。此版本还加强了对C20语言的支持&#xff0c;改进了数据流分析性能&#xff0c;并在整个产品中增加了多项用户体验改进。 增强的C20支持 此版本新增了对以下语言特性的支持&a…

代码随想录算法训练营Day28|93.复原IP地址、78.子集、90.子集II

93.复原IP地址 题目链接&#xff1a;93.复原IP地址 文档链接&#xff1a;93.复原IP地址 视频链接&#xff1a;回溯算法如何分割字符串并判断是合法IP&#xff1f;| LeetCode&#xff1a;93.复原IP地址 C实现 class Solution { private:vector<string> result;bool isVal…

vscode设置python脚本运行参数

1 添加配置文件 点击到你要配置的python文件&#xff0c;然后右上角点击 运行 &#xff0c;再点击 添加配置 再点击 “Pyhton文件” 选项&#xff08;其实就是在选择 当前的python文件 进行配置&#xff09; 接着就生成了配置文件 lanunch.json 2 参数配置 再上面代码的基础上…

c++语言基础20-排队取奶茶(堆)

题目描述 假设有一家奶茶店&#xff0c;现在有一些人在排队等待取奶茶&#xff0c;同时也有人在取奶茶。 请你设计一个程序模拟这种情况下的奶茶队列管理。假设每个人取奶茶的时间非常短&#xff0c;可以忽略不计&#xff0c;只需要考虑队列中的操作。 队列操作说明&#xff1…

Guava:Cache强大的本地缓存框架

Guava Cache是一款非常优秀的本地缓存框架。 一、 经典配置 Guava Cache 的数据结构跟 JDK1.7 的 ConcurrentHashMap 类似&#xff0c;提供了基于时间、容量、引用三种回收策略&#xff0c;以及自动加载、访问统计等功能。 基本的配置 Testpublic void testLoadingCache() th…

6 - 数据备份与恢复|innobackupex

数据备份与恢复&#xff5c;innobackupex 数据备份与恢复数据备份相关概念物理备份与恢复逻辑备份&#xff08;推荐&#xff09;使用binlog日志文件实现对数据的时时备份‘使用日志 恢复数据 innobackupex 对数据做备份和恢复增量备份与恢复 数据备份与恢复 数据备份相关概念 …

EPICS scanparm记录和相关软件

概要 本文档描述EPICS scanparm记录&#xff0c;以及构建和使用它所需的相关EPICS软件。此版本的记录兼容EPICS 3.14.8.2&#xff0c;而不兼容任何EPICS 3.13.x版本。 scanparm记录存储了为了将它们写入到EPICS sscan记录的参数&#xff0c;并且项EPICS终端用户提供了一种装载…

Tomcat服务实例部署

目录 **Tomcat 由一系列的组件构成&#xff0c;其中核心的组件有三个&#xff1a;** 什么是 servlet&#xff1f; 什么是 JSP? Tomcat 功能组件结构&#xff1a; Container 结构分析&#xff1a; Tomcat 请求过程&#xff1a; ## Tomcat 服务部署 1.关闭防火墙&#xf…

golang学习-流程控制

if else 建议条件不用()包裹&#xff0c;if{}不能省略&#xff0c;{}中的{必须紧靠着条件 go语言中没有while循环&#xff0c;可以通过for 代替 age : 30if age > 18 {fmt.Println("我是大人")}//另一种写法if age : 99; age > 18 {fmt.Printf("年龄是%v&…

一、数据结构

一、 数组 1.1 数组 定义 遍历 // 遍历数组 传递指针 func traverse() {var b [...]int{1, 2, 3} //长度为3 元素为 1 2 3var ptr &b //ptr是指向数组的指针fmt.Println(b[0], b[1]) // 打印数组的前 2 个元素fmt.Println(ptr[0], ptr[1]) // 通…

UDS统一诊断服务读取DTC信息0X19服务

概念 UDS(Unified Diagnostic Services)统一诊断服务中的0x19服务是用于读取诊断故障代码(DTC,Diagnostic Trouble Code)信息的服务。DTC是车辆故障诊断系统中的重要部分,当车辆发生故障时,相应的DTC会被存储在ECU(电子控制单元)的故障代码存储器中。 0x19服务包含了…

CMake入门教程【核心篇】导出项目库

概述 CMake是一个跨平台的自动化构建系统,它使用配置文件(CMakeLists.txt)来管理软件构建过程。如何使用CMake导出静态库(.a)和动态库(.so/.dll)。 #mermaid-svg-cnd9qfr6rFQgQRNR {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fil…

解读MyabtisPlus中的R类(通用响应包装类)

目录 前言1. 概念2. 源码解读3. Demo 前言 大部分R类可以自已手写一个适配的&#xff0c;但MybatisPlus中有专门的R类&#xff0c;于是就使用封装好的类即可 1. 概念 通用R类是一种用于处理API响应的通用响应包装类。 概念含义作用示例用途1.R类是一个泛型类&#xff0c;可…

C/C++汇编学习(六)——数据结构汇编实例:链表、树、图。

我们继续开展 目录 一、链表 1. C代码 2. 链表部分转为汇编并注释 二、树 1. C代码 2. 链表部分转为汇编并注释 3. 汇编伪代码 三、图 1. C代码 2. 汇编伪代码 四、总结 一、链表 1. C代码 #include <iostream>struct ListNode {int data;ListNode* next;…

vue 前端等比例压缩图片(再转换成文件后上传后端)

前端压缩图片总的来说还是转base64 然后等比例放小宽和高 这个是上次压缩图片的一个扩展 压缩完之后 再将base64 转成blob再转成文件然后再上传 一生要强的前端崽子&#xff08;后端不支持base64上传&#xff09; 自己改吧改吧 // 图片上传async changePic(e) {this.isshang…

【Docker】Docker基础

文章目录 安装使用帮助启动命令镜像命令容器命令 安装 # 卸载旧版本 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine # 设置存储库 sudo yum install -y yum-utils …

关于git使用的tips

前言 这里是一些git指令使用的tips&#xff0c;如果你作为初学者的话&#xff0c;我认为它将对你有所帮助。 常见指令 常见问题处理 1、使用git clone下载【huggingface.co】资源超时或无法请求问题 绝大多数情况是网络问题&#xff0c;首先如果是比较大的资源&#xff0c;你需…

数据库:如何取消mysql的密码

因为调试MySQL数据接口&#xff0c;总是需要输入密码很烦&#xff0c;所以决定取消mysql的root密码&#xff0c; 网上推荐的有两种方法&#xff1a; 1、mysql命令 SET PASSWORD FOR rootlocalhostPASSWORD(); 2、运行 mysqladmin 命令 mysqladmin -u root -p password …

C# 错误: 集合已修改,可能无法执行枚举操作

出错原因是使用了RemoveAt()函数移除了数据中的某一个数&#xff0c;导致数据发生了错位&#xff08;参考链接一&#xff09; 解决方案&#xff1a; 第一种解决方法&#xff1a;使用for循环 第二种解决方法&#xff1a;调用ToArray()方法&#xff0c;然后再进行foreach循环 …