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

每日OJ题_栈①_力扣1047. 删除字符串中的所有相邻重复项

目录

力扣1047. 删除字符串中的所有相邻重复项

解析代码


力扣1047. 删除字符串中的所有相邻重复项

1047. 删除字符串中的所有相邻重复项

难度 简单

给出由小写字母组成的字符串 S重复项删除操作会选择两个相邻且相同的字母,并删除它们。

在 S 上反复执行重复项删除操作,直到无法继续删除。

在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。

示例:

输入:"abbaca"
输出:"ca"
解释:
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。

提示:

  1. 1 <= S.length <= 20000
  2. S 仅由小写英文字母组成。
class Solution {
public:string removeDuplicates(string s) {}
};

解析代码

        本题很像消消乐游戏,仔细观察消除过程,可以发现本题与之前做过的括号匹配问题是类似的。当前元素是否被消除,需要知道上一个元素的信息,因此可以用来保存信息。 但是如果使用 stack 容器来保存的话,最后还需要把结果从栈中取出来。不如直接用字符数组模拟一个栈结构:在数组的尾部尾插尾删,实现栈的进栈和出栈。最后数组存留的内容, 就是最后的结果。

class Solution {
public:string removeDuplicates(string s) {string stack = "";for(auto& e : s){if(stack.size() == 0 || stack.back() != e)stack += e;elsestack.pop_back();}return stack;}
};
http://www.lryc.cn/news/325315.html

相关文章:

  • SQLServer SEQUENCE用法
  • Java中的代理模式(动态代理和静态代理)
  • 强化学习之父Richard Sutton:通往AGI的另一种可能
  • 【智能算法】秃鹰搜索算法(BES)原理及实现
  • 前端并发控制
  • 基于YOLOv8深度学习的橙子病害智能诊断与防治系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分类
  • Java中的多线程详解(超级简单理解)(上篇)
  • Elastic-Job 分布式任务调度
  • YZ系列工具之YZ09: VBA_Excel之读心术
  • Python下载音乐
  • PCL ICP配准高阶用法——统计每次迭代的配准误差并可视化
  • 电脑卸载软件怎么清理干净?电脑清理的5种方法
  • LLM流式方案解决方案和客户端解决方案
  • ROS2 高效学习系列
  • SpringBoot + MyBatisPlus分页查询
  • 记使用sjson的一次小事故
  • 如何在iOS系统抓取log
  • 【嵌入式——QT】Charts常见的图表的绘制
  • pandas读写excel,csv
  • 清华大学突破性研究:GVGEN技术,7秒内从文字到3D高保真生成
  • 软件测试要学习的基础知识——黑盒测试
  • 如何用Airtest脚本连接无线Android设备?
  • c语言函数大全(C开头)
  • 初始Redis关联和非关联
  • Redis 更新开源许可证 - 不再支持云供应商提供商业化的 Redis
  • 生产者Producer往BufferQueue中写数据的过程
  • 使用 Vite 和 Bun 构建前端
  • 如何设置IDEA远程连接服务器开发环境并结合cpolar实现ssh远程开发
  • 【项目管理后台】Vue3+Ts+Sass实战框架搭建二
  • 制作一个RISC-V的操作系统六-bootstrap program(risv 引导程序)