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

​LeetCode解法汇总2696. 删除子串后的字符串最小长度

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:. - 力扣(LeetCode)


描述:

给你一个仅由 大写 英文字符组成的字符串 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 仅由大写英文字母组成

解题思路:

这题还是比较简单的,因为s的长度为100以内,所以可以直接按照题目的描述去实现。时间复杂度其实是O(n2)。

如果这题的长度改为10W,则肯定就不行了,那时候就需要把时间复杂度限制到O(n)了。这时,就需要从前向后寻找AB或者CD,删除后,检查删除位置的前后是否构成新的AB或者CD,如果是则继续删除,而不是每次都从头查询。

代码:

class Solution {
public:int minLength(string s){while (true){bool flag = true;size_t index = s.find("AB");if (index != std::string::npos){s = s.substr(0, index) + s.substr(index + 2, s.size() - index - 2);flag &= false;}index = s.find("CD");if (index != std::string::npos){s = s.substr(0, index) + s.substr(index + 2, s.size() - index - 2);flag &= false;}if (flag){break;}}return s.size();}
};

相关文章:

  • 超级详细Git操作 之git log 命令的参数详解
  • 详解Oracle数据库的启动
  • 使用 Process Explorer 和 Windbg 排查软件线程堵塞问题
  • C++ Qt开发:Charts与数据库组件联动
  • 北斗卫星助力智慧公园实现智能化管理
  • 基于Java+SpringBoot+vue+elementUI私人健身教练预约管理系统设计实现
  • 0111qt
  • 【Docker Compose】案例分享
  • maven的scop作用域依赖问题导致idea社区版报错
  • 【椒盐玉兔】GPTs Store 商店的TOP100 自定义GPT使用报告
  • 数据结构栈、队列、链表、散列表
  • js_BOMDomAjax
  • 联邦学习中聚合算法可能怎样创新,智慧农业结合什么数学理论或知名理论实现创新并发表文章
  • S7-200SMART实例之冒泡法排序子程序
  • 能赚钱的GPT Store正式上线!如何将自己的 GPT 放到商店中?
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • JAVA_NIO系列——Channel和Buffer详解
  • Javascript基础之Array数组API
  • Js基础知识(一) - 变量
  • js数组之filter
  • Linux CTF 逆向入门
  • Magento 1.x 中文订单打印乱码
  • magento 货币换算
  • python学习笔记-类对象的信息
  • Sass Day-01
  • springboot_database项目介绍
  • Spring核心 Bean的高级装配
  • 近期前端发展计划
  • 排序(1):冒泡排序
  • 前端面试总结(at, md)
  • 使用agvtool更改app version/build
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 智能合约开发环境搭建及Hello World合约
  • 最简单的无缝轮播
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • #android不同版本废弃api,新api。
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (十五)使用Nexus创建Maven私服
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET Core中Emit的使用
  • .NET Reactor简单使用教程
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • .NET委托:一个关于C#的睡前故事
  • .net项目IIS、VS 附加进程调试
  • @SentinelResource详解
  • @SuppressWarnings(unchecked)代码的作用