leetcode1047. 删除字符串中的所有相邻重复项(栈的日常应用)

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

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

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

 

示例:

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

提示:

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

 

思路:

充分理解题意后,我们可以发现,当字符串中同时有多组相邻重复项时,我们无论是先删除哪一个,都不会影响最终的结果。因此我们可以从左向右顺次处理该字符串。

而消除一对相邻重复项可能会导致新的相邻重复项出现,如从字符串 abba 中删除bb 会导致出现新的相邻重复项 aa 出现。因此我们需要保存当前还未被删除的字符。一种显而易见的数据结构:栈。

我们只需要遍历该字符串,如果当前字符和栈顶字符相同,我们就将其消去,否则就将其入栈即可。

class Solution {public String removeDuplicates(String S) {StringBuffer stack = new StringBuffer();int top = -1;for (int i = 0; i < S.length(); ++i) {char ch = S.charAt(i);if (top >= 0 && stack.charAt(top) == ch) {stack.deleteCharAt(top);--top;} else {stack.append(ch);++top;}}return stack.toString();}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443982.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法题的输入大总结

赶紧收藏吧&#xff0c;小白必备知识了 本文以求和为例 多组输入&#xff0c;每组输入共一行&#xff0c;包括两个整数A, B Sample Input 1 2 12 24 400 500 Sample Output 3 36 900 import java.util.Scanner; public class Main {public static void main(String[] args) …

精华Java问题总结

当时在网上汇总了不知多少面试和基础题&#xff0c;弄了个精华总结。 1、一个".java"源文件中是否可以包括多个类&#xff08;不是内部类&#xff09;&#xff1f;有什么限制&#xff1f; 可以有多个类&#xff0c;但只能有一个public的类&#xff0c;并且public的类…

复习Java的精华总结

小白和老手都应该看看的总结 输入 java.util.Scanner 是 Java5 的新特征&#xff0c;我们可以通过 Scanner 类来获取用户的输入。 下面是创建 Scanner 对象的基本语法&#xff1a; Scanner s new Scanner(System.in); 使用方法如下&#xff1a; //对应类型用对应的方法接…

必须知道的python专属骚技巧25例

本文我总结了25个python专属骚操作&#xff0c;实属提高效率/同事吹牛只利器&#xff0c;确定不收藏吗&#xff1f; 一、原地交换 Python 提供了一个直观的在一行代码中赋值与交换&#xff08;变量值&#xff09;的方法 x, y 10, 20 print(x, y)x, y y, x print(x, y)#1 (10…

Oracle10g数据库的完全卸载:

卸载Oracle &#xff1a; 1、停止所有Oracle服务&#xff0c;点Universal Installer卸载2、删除注册表中的所有关于Oracle项&#xff08;1&#xff09;在HKEY_LOCAL_MACHINE\SOFTWARE下&#xff0c;删除Oracle目录&#xff08;2&#xff09;在HKEY_LOCAL_MACHINE\SYSTEM\Contro…

超硬核!躺进BAT以后我总结了出现最多的15道数组题

作为一个硬核作者&#xff0c;绝不和你扯废话&#xff0c;干货无套路送你 题目一&#xff1a; 给定一个数组arr&#xff0c;求出需要排序的最短子数组长度 要求&#xff1a; 时间o(n),空间o(1) 思路&#xff1a; 有序的数组中&#xff0c;任意一个数字&#xff0c;一定小于左…

《关于我的那些面经》滴滴Java岗(附答案)

手撕单例模式 所谓单例&#xff0c;就是整个程序有且仅有一个实例。该类负责创建自己的对象&#xff0c;同时确保只有一个对象被创建。 在Java&#xff0c;一般常用在工具类的实现或创建对象需要消耗资源。特点&#xff1a;类构造器私有、持有自己类型的属性、对外提供获取实…

《关于我的那些面经》——百度后端(附答案)

作者保证&#xff0c;本系列全是纯干货真实记录&#xff0c;绝对不是某些营销号瞎编乱造的面试。 一、公司的简介 百度是全球最大的中文搜索引擎&#xff0c;是中国最大的以信息和知识为核心的互联网综合服务公司&#xff0c;更是全球领先的人工智能平台型公司。2000年1月1日创…

《兔兔公司的历史》那些年,百度的荣耀和沉沦

这是全站最硬核的兔子700文章后的第一篇软文&#xff0c;觉得喜欢的同学可以三连一波&#xff0c;如果大家喜欢&#xff0c;我会出公司的历史系列、互联网大佬系列、产品经理系列&#xff0c;大家喜欢哪个呢&#xff1f; 百度公司的发展趋势 还记得南宋词人辛弃疾的那首词吗&a…

这篇不讨好任何人的回忆录,记录了我从双非学校到BAT/TMD六offer的原因

注&#xff1a;给我想个新名字好不好呀&#xff0c;采用了直接发百元红包&#xff01;没别的&#xff0c;想让大家认识兔兔rabbit&#xff0c;说一下自己的经验教训&#xff0c;应该会对很多人有帮助。 一、前言 在今年&#xff0c;我要毕业了&#xff0c;基本结束了大学生活&…

如何把maven项目转成web项目

创建Web工程&#xff0c;使用eclipse ee创建maven web工程 1.右键项目,选择Project Facets,点击Convert to faceted from 2.更改Dynamic Web Module的Version为2.5.(3.0为Java7的,Tomcat6不支持). 如果提示错误,可能需要在Java Compiler设置Compiler compliance level 为1.6 …

《兔子的大厂面经合集》朋友面神策数据库,第五个问题不会,直接再见(1)

这个系列计划收集几百份朋友和读者的面经&#xff0c;作者合集方便查看&#xff0c;各位有面经屯着可以联系我哦 写数据库还真不是人人都能干的&#xff0c;硬是一道别的题都没问。

老师给的硬核移动端测试面试题目,大家看看靠谱吗

以后我把各岗位的题目更新个遍&#xff0c;当然大部分都是我自己总结的保证质量哈 ADB工作原理 当用户启动一个adb客户端&#xff0c;客户端首先确认是否已有一个adb服务进程在运行。如果没有&#xff0c;则启动服务进程。当服务器运行&#xff0c; adb服务器就会绑定本地的TC…

兔子,撒币

作为最硬核的你兔老大&#xff0c;我狠起来连自己都骂 一、原力第一 哈哈当然不是骂自己啦哈哈&#xff0c;其实是最近csdn出了一个活动&#xff1a;原力计划s3&#xff0c;弄得我现在整天想着&#xff0c;给你们发钱。发书。发资料。 对&#xff0c;就是这个玩意&#xff1a…

超硬核!数据库学霸笔记,考试/面试随便秒杀

废话不多说&#xff0c;上干货是兔老大的传统了&#xff0c;收藏就完事了。 目录 数据库系统概论 四个基本概念 数据模型 数据库系统结构 数据库系统模式的概念 数据库系统的三级模式结构 数据库的二级映像功能与数据的独立性 数据库系统的组成 关系 关系模式 关系数…

一个神奇的大学科目《软件工程》,知识点总结+测试题,包你不挂科

谁能告诉我这科的理论在哪可以实用呀&#xff1f;搞不懂&#xff0c;只能收藏一下包不挂科 知识点总结 第一章&#xff1a; 软件工程定义&#xff1a; 1968年10月&#xff0c;Fritz Bauer 首次提出了“软件工程”的概念&#xff0c;并将“软件工程”定义为&#xff1a;为了经…

Toad for Oracle9.7中导入数据库以后,数据有中文乱码:

昨天&#xff0c;在阿里云服务器上安装了Oracle10g的数据库后&#xff0c;又安装了Toad for Oracle9.7工具&#xff0c;之后导入数据后发现数据的中文是乱码&#xff0c;最后经过多方查找&#xff0c;终于解决了&#xff0c;现在总结一下&#xff0c;以供后来的人查看。 一&am…

腾讯面试Android必问11题,我说的,不信就来看看

众所周知兔子啥都会那么一点&#xff0c;不收藏等着干啥呢 1、是否使用过本地广播&#xff0c;和全局广播有什么差别&#xff1f; 引入本地广播的机制是为了解决安全性的问题&#xff1a; 正在发送的广播不会脱离应用程序&#xff0c;比用担心app的数据泄露&#xff1b;其他的…

超硬核!我统计了BAT笔试面试出现频率最高的五道题,学会了总能碰到一道

所以说不要怕算法&#xff0c;简单的题反而出现的频率最高&#xff0c;不一定非要写个几百道才面试 两数之和 给定一个整数数组 nums 和一个目标值 target&#xff0c;请你在该数组中找出和为目标值的那 两个 整数&#xff0c;并返回他们的数组下标。 你可以假设每种输入只会…

不骗你,全网首创的超硬核的万字SQL题

因为上次发了数据库原理总结&#xff0c;浏览快上万了&#xff0c;所以把我总结的题目 也送给大家 上次的数据库原理总结 一&#xff0e;根据员工工资计算其个人所得税&#xff0c;3000元为起征点&#xff0c;超出3000元的部分按照10%的比例征收个人所得税&#xff0c;例如&…