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

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

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

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

示例:

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

提示:

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

解题报告:

根据不同操作序列得到结果的等价性,我们可以找到一对就操作一次,这样可以保证所有能消除的也都会被消除。

AC代码:

class Solution {
public:string removeDuplicates(string S) {string ret = "";stack<char> sk;for(int i = 0; i<S.length(); i++) {if(sk.size() && S[i] == sk.top()) sk.pop();else sk.push(S[i]);}while(sk.size()) {ret+=sk.top();sk.pop();}reverse(ret.begin(), ret.end());return ret;}
};

【LeetCode - 1047】删除字符串中的所有相邻重复项(栈)相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

    删除字符串中的所有相邻重复项 题目 分析 我的解答 题目 删除字符串中的所有相邻重复项 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们. 在 S 上反复执行重复项 ...

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

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

最新文章

  1. Linux ps命令详解与示例说明
  2. 【干货】极简体验+免费真的万能嘛?北森Saas第一坑:免费
  3. Python练习题:计算平均分
  4. 域渗透基础之环境搭建(单域到组件域林)
  5. 说实话,用完Gradle之后,有点嫌弃Maven了。贼好用!
  6. “过午不食”实锤了!协和医院最新研究:每天6:00-15:00进食,其它时间不吃饭!...
  7. 开源库UITableView+FDTemplateLayoutCell学习
  8. linux光盘挂载加载过程,如何在Linux系统下挂载光盘
  9. CAS简介和无锁队列的实现
  10. 编写高质量java代码_编写高质量的Java代码
  11. Typora免费版,不是破解版,是没有升级的老版本,用的还是比较舒服的
  12. oracle 建表sql语句,oracle 建表sql语句
  13. java-se-包装类
  14. 最新爱云发卡系统源码公益版
  15. android 功能页面设计,50个优秀用户体验的手机界面设计(APP UI DESIGN)
  16. 物质是世界,能量是本质
  17. ZStack-ZCCE-网络实验-VPC网络创建
  18. Linux下手动安装screen
  19. python实现一元三次方程求根-二分法
  20. 基本排序算法 【转载】

热门文章

  1. Depth-first Search深度优先搜索专题1
  2. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第39篇]侧信道攻击和故障攻击有什么区别
  3. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第7篇]随机性如何辅助计算和什么是BPP类问题
  4. [签名算法]DSA 算法
  5. 1.6解不等式 1.6.1 平方根不等式
  6. memset和fill
  7. 怎么用PHP修改文字大小,如何利用PHP和CSS改变网页文字大小
  8. Android中怎获取json,Android应用中如何解析获取的json数据
  9. 将java项目做成app_将鸿蒙做成和EMUI一致,又兼容安卓APP,华为已立于不败之地...
  10. history模式监听_面试题:VueRouter中的 hash 模式和 history 模式有什么区别