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

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

leetcode 1047
在这里插入图片描述

思路

因为要删除字符串中的所有相邻重复项,那么在删除完成后,最后返回的元素中是不应该存在任何相邻重复项的,如果是普通的遍历,假设str = ‘abbaca’,遍历出来只发现中间的bb是相邻重复的删除了以后aaca又是重复的,又要去遍历,并且索引位置还会发生改变,这样想的话就复杂化了

所以怎样解决这个题更简单呢?

利用栈来解决本题,把遍历到的元素和栈顶元素进行比较,如果相等,那么说明是要消除的元素,如果不相等,那么要把从栈顶取出的元素先放回,然后把当前遍历的元素也放入,最终遍历完成后把栈中元素转为字符串即得到答案
让我们模拟一下操作,假设str = ‘abbaca’
1: item = a stack = [‘a’]
2: item = b stack = [‘a’,‘b’]
3: item = b stack.pop() = ‘b’ ✅ stack = [‘a’]
4: item = a stack.pop() = ‘a’ ✅ stack = []
5: item = c stack = [‘c’]
6: item = a stack = [‘c’, ‘a’]
result = ‘ca’

实现

function removeDuplicates(s: string): string {
    const stack = [];
    for(const item of s){
        const ele = stack.pop();
        if(ele !== item){
            stack.push(ele);
            stack.push(item)
        }
    }
    return stack.join('')
};

http://www.kler.cn/a/555640.html

相关文章:

  • 【量化科普】Sharpe Ratio,夏普比率
  • @Transactional 嵌套,内层抛异常,外层用 try-catch 捕获但实际事务却回滚了
  • 设计模式在Qt中的应用
  • QT--QLineEdit
  • Qt的QToolButton样式设置
  • MySQL多列索引查询优化
  • JavaScript基础之深拷贝浅拷贝
  • Python 高级特性-切片
  • 网络安全知识:网络安全概念、内容和主要技术纵览
  • Hive JSON解析终极武器:魔改`json_tuple`源码支持嵌套路径完整指南
  • 七星棋牌源码高阶技术指南:6端互通、200+子游戏玩法深度剖析与企业级搭建实战(完全开源)
  • 【Server Components 解析:Next.js 的未来组件模型】
  • 最新本地部署 DeepSeekR1 蒸馏\满血量化版 + WebOpenUI 完整教程(Ubuntu\Linux系统\Ollama)
  • 【WPS+VBA】表格中重复表头与页码的批量删除
  • C/C++ 指针避坑20条
  • KT142C语音芯片支持的语音文件格式什么?Mp3还是wav呢?
  • 【Unity 游戏引擎插件】Modular Multiplayer FPS Engine (Mirror) (MMFPSE) 专注于帮助开发者快速构建多人第一人称射击(FPS)游戏
  • AI助力下的PPT革命:DeepSeek 与Kimi的高效创作实践
  • SQLMesh 系列教程7- 详解 seed 模型
  • 发现一个挺好的项目,可以在springboot项目中快速接入DeepSeek API,有需要的可以尝试一下