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

  • 题目
  • 分析
  • 我的解答

题目

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

示例:

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

提示:

1 <= S.length <= 20000
S 仅由小写英文字母组成。

分析

这个题像是简化版的消消乐游戏。数据是一维的,一次只消除两个。

我的解答

  1. 新建一个空的栈
  2. 遍历输入的字符串,如果当前的字符串与栈顶的元素相同,则弹出栈顶的元素。否则,将遍历的元素压入栈中。
    这一步可以两个方向实现:
    1)栈不为空且栈顶元素等于遍历元素,弹出栈顶元素;否则,压入栈。
    2)栈为空且栈顶元素不等于遍历元素,压入栈;否则,弹出栈顶元素。
class Solution:def removeDuplicates(self, S: str) -> str:stack = []for item in S:if len(stack)>0 and stack[-1] == item:# 同时判断两个逻辑,可以减少一行代码stack.pop(-1)else:stack.append(item)return ''.join(stack)

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

  1. Suzy找到实习了吗Day 11 |栈与队列中途 20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值

    Day 11 20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值 20. 有效的括号 注意栈不是一个数据结构,需要自己用list实现栈的逻辑 class Solu ...

  2. 算法训练Day11|LeetCode 20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值

    题目链接:20. 有效的括号 第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false 第二种情况:遍历字符串匹配的过程中,发现栈里没有要匹配的字 ...

  3. 算法训练第十一天|力扣20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值

    20. 有效的括号 题目链接:有效的括号 参考:https://programmercarl.com/0020.%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B ...

  4. 算法训练Day11 | LeetCode232. 用栈实现队列(模拟);225.用队列实现栈(模拟);20. 有效的括号(栈应用);1047. 删除字符串中的所有相邻重复项(栈应用)

    目录 LeetCode232.用栈实现队列 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 LeetCode225. 用队列实现栈 1. 思路 2. 代码实现 3. 复杂度分析 4. 思考 ...

  5. 代码随想录算法训练Day11 LeetCode232. 用栈实现队列(模拟);225.用队列实现栈(模拟);20. 有效的括号(栈应用);1047. 删除字符串中的所有相邻重复项(栈应用)

    代码随想录算法训练Day11 | LeetCode232. 用栈实现队列(模拟):225.用队列实现栈(模拟):20. 有效的括号(栈应用):1047. 删除字符串中的所有相邻重复项(栈应用) 关于栈 ...

  6. 【Leetcode栈与队列】1047.删除字符串中的所有相邻重复项 6120.数组能形成多少数对(一些题外话和做题经验!!看作对对碰游戏!!)

    文章目录 题外话 1.游戏开发可能使用栈结构 2.编程语言的一些功能实现也会使用栈结构 Leetcode 1047.删除字符串中的所有相邻重复项 1.问题描述 2.解决方案 Leetcode 6120 ...

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

    题目链接: 删除字符串中的所有相邻重复项 - 力扣(LeetCode)​leetcode-cn.com 题目描述: 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们 ...

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

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

  9. leetcode 1047. 删除字符串中的所有相邻重复项(栈)

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

最新文章

  1. dubbo之注册管理中心
  2. A站、B站、C站、D站、E站、F站、G站、H站、I站、J站、J站、L站、M站、N站…Z站?...
  3. 工厂方法(父类定义创建对象的接口,通过多态让子类来创建具体的对象)
  4. 1231 最优布线问题
  5. Linux显示5 9行的数据,Linux复习
  6. Vue 学习第五天 学习笔记
  7. file is not a zip file_【钢新滨河社团活动】超燃手势舞,牛津A班邀你来battle!
  8. html和css动画效果,css过渡和css动画的区别是什么?
  9. Bootstrap 工具提示插件Tooltip 的选项
  10. 数组的内存理解(图示)
  11. 用于Power BI Desktop中的库存数据分析的烛台图
  12. 微软Windows7对Vista的几点改进
  13. GIS Experience (六):QGIS安装及使用教程
  14. 【原创】MapGIS K9 三维二次开发入门
  15. Widget的简单使用详解
  16. “没有银弹”的由来!
  17. chrome14-使用snippets辅助debugging
  18. 一日一技:用Python绘画有多好玩
  19. 十五天学会Autodesk Inventor,看完这一系列就够了(七),工程图纸
  20. 一张图看懂Polyspace都能帮你做什么,好强大

热门文章

  1. 各种语言速度之比,实验验证Cgojuliajavapythonoctave
  2. python中一个范围怎么表示_我应该如何处理Python中的包含范围?
  3. 工业用微型计算机(17)-指令系统(12)
  4. 【面试招聘】程序员面试完全指南
  5. 【机器学习】梯度下降的Python实现
  6. 【面试招聘】据说这里有一份关于BAT的 “宝藏级” 面试记录终于可以看了!...
  7. 【机器学习实战】意大利Covid-19病毒感染数学模型及预测
  8. 50题matplotlib从入门到精通
  9. 深度学习笔记 第四门课 卷积神经网络 第四周 特殊应用:人脸识别和神经风格转换...
  10. Ubuntu18.04深度学习环境配置(简易方式)