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

数据结构与算法之栈: LeetCode 1047. 删除字符串中的所有相邻重复项 (Ts版)

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

  • https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/

描述

  • 给出由小写字母组成的字符串 s,重复项删除操作会选择两个相邻且相同的字母,并删除它们
  • 在 s 上反复执行重复项删除操作,直到无法继续删除
  • 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一

示例

输入:"abbaca"
输出:"ca"

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

提示

  • 1 <= s.length <= 1 0 5 10^5 105
  • s 仅由小写英文字母组成

Typescript 版算法实现


1 ) 方案1: 栈

function removeDuplicates(s: string): string {const stk = [];for (const ch of s) {if (stk.length && stk[stk.length - 1] === ch) {stk.pop();} else {stk.push(ch);}}return stk.join('');
};

2 ) 方案2:栈优化

function removeDuplicates(s: string): string {const stack = []for (const x of s) {let len = stack.lengthif (len && stack[len - 1] == x) {stack.pop()continue}stack.push(x)}return stack.join("")
};
http://www.lryc.cn/news/521553.html

相关文章:

  • C++ 在线编译软件介绍、杭电OJ、北大OJ、力扣OJ
  • Java学习笔记(二十三)
  • 《AI赋能鸿蒙Next,开启智能关卡设计新时代》
  • js:正则表达式
  • linux环境使用docker部署多个war项目
  • 【react】使用antd Table渲染数据遇到的报错问题
  • JVM之垃圾回收器G1概述的详细解析
  • 1.15寒假作业
  • RK356x bsp 5 - 海华AW-CM358SM Wi-Fi/Bt模组调试记录
  • 支持Google Analytics快捷添加的CMS:费用与部署形式详解
  • CSS | 实现三列布局(两边边定宽 中间自适应,自适应成比)
  • fpga系列 HDL:跨时钟域同步 双触发器同步器
  • 金融项目实战 05|Python实现接口自动化——登录接口
  • 《HTML在网络安全中的多面应用:从防范攻击到安全审查》
  • Linux网络 | 学习传输层网络协议之UDP(短篇)
  • iOS - 内存屏障的使用场景
  • MySQL 8.0 新特性详解与实用示例
  • 【STM32-学习笔记-5-】ADC
  • TY1801 反激变换器PWM GaN功率开关
  • Jenkins安装、插件下载及构建环境配置详解
  • ESP32,uart安装驱动uart_driver_install函数剖析,以及intr_alloc_flags 参数的意义
  • Ubuntu把应用程序放到桌面
  • 什么是端口映射
  • 数据结构《MapSet哈希表》
  • 【QT】QComboBox:activated信号和currentIndexChanged信号的区别
  • 【Block总结】ELGCA模块,池化-转置(PT)注意力和深度卷积有效聚合局部和全局上下文信息
  • MERN全栈脚手架(MongoDB、Express、React、Node)与Yeoman详解
  • 基于springboot+vue+微信小程序的宠物领养系统
  • 如何使用策略模式并让spring管理
  • react中hooks之useRef 用法总结