java数据结构与算法刷题-----LeetCode1047. 删除字符串中的所有相邻重复项

java字符串的算法题(1)-华为刷题 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

在这里插入图片描述

解题思路
  1. 用栈,时间复杂度和空间复杂度都是O(n). 每次拿到新字符时,先比较栈顶字符,检查是否相邻重复,如果是,不入栈新字符,并且栈顶字符出栈移除
  2. 双指针,时间复杂度O(n),空间复杂度O(1). fast指针遍历字符串的字符,slow指针,找到每一个相邻重复的字符,让fast指针的元素后移到slow的位置,覆盖相邻重复字符。
双指针法图解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码
  1. 栈
    在这里插入图片描述
class Solution {
    public String removeDuplicates(String s) {
        StringBuffer stack = new StringBuffer();//创建栈,用StringBuffer模拟栈
        int top = -1;//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();
    }
}
  1. 双指针
    在这里插入图片描述
class Solution {
    public String removeDuplicates(String s) {
        char[] ch = s.toCharArray();//获取字符数组
        int fast = 0;//快指针,用于遍历字符数组
        int slow = 0;//慢指针,用于寻找相邻重复的,应该去掉的元素位置
        while(fast < s.length()){//快指针不要越界
            ch[slow] = ch[fast];//让快指针指向的元素,移动到慢指针位置
            if (slow > 0 && ch[slow] == ch[slow - 1]) {//如果slow位置和slow-1位置是相同元素,那就是需要去掉的元素
                slow--;//slow回到需要去掉的位置
                fast++;//fast继续遍历字符串
            } else {//如果不是需要去掉的位置
                slow++;//slow后移继续寻找应该去掉的位置
                fast++;//fast继续遍历数组           
            }
        }
        return new String(ch,0,slow);
    }
}
【实战】ACM 选手图解 LeetCode 删除字符串中的所有相邻重复项 图解 LeetCode 1047:删除字符串中的所有相邻重复项 阅读详情

相关推荐

Virtualbox “Kernel driver not installed (rc=-1908)”问题全面解析与修复指南

本文全面解析了Virtualbox出现'Kernel driver not installed (rc=-1908)'错误的原因及修复方法。详细介绍了如何通过重新安装virtualbox-dkms、处理Secure Boot特殊情况等步骤解决该问题,并提供了预防措施与最佳实践,帮助用户避免类似错误再次发生。

weixin_30352645的博客 530

18 道 Java 字符串相关算法题思路简介及代码实现

字符串(String)相关的问题占据着举足轻重的地位。这是因为字符串作为基本的数据类型之一,广泛应用于各类编程场景,包括但不限于数据传输、文件处理、用户界面展示、数据库操作、网络通信等。熟练掌握字符串操作不仅是日常编程工作的必备技能,也是评估面试者编程基础、逻辑思维和问题解决能力的重要依据

zp8126的专栏 1737

ADC(三)Guard ring的设计艺术:从单元到系统的隔离策略

本文深入探讨了ADC设计中Guard ring(保护环)从单元到系统的多层次隔离策略。文章分享了从新手到专家的认知升级过程,详细分析了在单元内部进行微隔离、在模块间建立噪声屏障以及在系统层面规划全局隔离带的实用方法与设计艺术,强调了Guard ring对于提升混合信号电路性能和可靠性的关键作用。

weixin_28312391的博客 154

Java算法—字符串

字符串

a402498234的博客 723

微信小店推客分销系统源码获取与自研开发全攻略(2025年最新版)

源码选择建议快速试错:选用开源项目(如启航系统),3天可上线基础功能长期布局:购买商业源码授权,重点定制分佣规则与UI交互完全自研:适合年GMV过亿的大型企业,需前置投入风控与合规设计行动清单注册微信开放平台账号,完成视频号机构认证下载开源项目代码,部署本地测试环境联系三家源码供应商,获取合规性审计报告设计三级分佣比例表,通过法律顾问合规审查通过以上路径,可高效构建合规、稳定、高转化的微信小店推客分销系统,抢占2025年视频号电商红利。

2401_85184777的博客 1286

从零到一:STM32 CubeMX与WS2812B的DMA驱动艺术

本文详细介绍了如何使用STM32 CubeMX和DMA技术驱动WS2812B RGB LED灯条,从硬件设计到软件实现的全过程。通过CubeMX配置定时器和DMA,实现高效的PWM波形生成与数据传输,解决传统GPIO控制资源占用高的问题。文章还提供了颜色编码、动画效果实现及常见问题解决方案,助力开发者快速掌握智能LED控制技术。

weixin_28278377的博客 979

java中关于String字符串五种常见的算法题目

java中关于String字符串常见的五道面试题。1. 模拟一个trim方法,去除字符串两端的空格。2. 将一个字符串进行反转。3. 获取一个字符串在另一个字符串中出现的次数。4.获取两个字符串中最大相同子串。5.对字符串中字符进行自然顺序排序。

qq1347268063的博客 1098

OpenCV安装配置教程VS2022(超级顺利)

博主最开始没打算写这篇博客,只是想简单的在网上找一下最新版的OpenCV的安装配置教程,适用于VS2022的,但是我搜了一早上,也没搜到一个能让我成功安装配置的,看了很多很多文章,根本就没有几篇有用的。所以没办法了,只能自己研究了,于是就整理了这篇博客,希望能帮到和我一样的人,这就是博主一直信奉的利他精神!

weixin_47367099的博客 5万+

算法很美笔记(Java)——字符串

假设字符串是ASCII字符串因为码表一共128个元素,所以辅助空间开129个,索引是0~128可以直接遍历每个字符,取对应的码值作为索引,填入辅助空间内如果不能开辟辅助空间,就只能两层for循环遍历取到一个元素,就与所有元素作比较,看相不相等。

2301_80103773的博客 482

二进制、八进制、十六进制、十进制转换详解

二进制是计算机的语言,正如我们使用汉语表达与交流信息一样,任何信息在计算机中都以二进制的形式存储和计算。了解二进制与十进制等进制之间的转换方法,有助于我们了解计算机内部的数字计算过程,可以帮助我们在一定程度上理解信息在计算机中的编码和解码过程。本文先简单介绍位置化数字系统的概念,然后详细讲解二进制、八进制、十六进制、十进制之间的转换方法与原理。

2301_81674797的博客 2097

华为OD机试 - 直捣黄龙 - 广度优先搜索BFS(Python/JS/C/C++ 新系统 200分)

从样例 1 可知:5 / 2,2 -> 输出 2 9如果按“移动步数”计算应该是 8,但题目输出是 9,说明这里的“路径长度”统计的是 路径上经过的节点数量。最短路径条数:ways[end]路径长度:dist[end] + 1。

学Java,找哪吒 125

leetcode1047. 删除字符串中的所有相邻重复项(java)

题目: 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 提示: 1 <= S.length <= 20000 S 仅由小写英文字母组成。 示例: 代码: 解法一 class Solution { public Stri...

inferno_devil的博客 1171

手游功耗优化:从猜想到硬核实测

功耗本质是“硬件在吃电”,要看电流/功率曲线,而不是只看帧率和温度;定量 = 有数字、有曲线、有对比能说“降了 15%”、“峰值从 7W 降到 5.5W”,而不是“我感觉凉快点”;工具方面:大厂会用外接功率仪 + 手机/芯片厂内部平台;平时也会用 Android/iOS/引擎自带的工具做趋势分析;流程上:选典型机型和场景 → 跑脚本采集 → 对齐 Profiler 数据 → 分析 CPU/GPU/网络谁在吃电;再通过版本对比、画质/帧率组合测试,指导配置和优化。这是一个。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 181

刷题计划 day10 栈与队列上【用栈实现队列】【用队列实现栈】【有效的括号】【删除字符串中的所有相邻重复项】

⚡刷题计划day10栈与队列继续,可以点个免费的赞哦~往期可看专栏,关注不迷路,您的支持是我的最大动力🌹~

weixin_72499901的博客 1016

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【LeetCode刷题日记】1047:双栈法与双指针法巧妙消除相邻重复字符

摘要:本文针对LeetCode 1047题"删除字符串中的所有相邻重复项"提出了两种解法。第一种使用Deque栈结构,通过压栈和弹栈操作消除相邻重复字符,最后反转剩余字符得到结果。第二种采用双指针法,将原数组模拟为栈,通过快慢指针实现原地修改,空间效率更高。两种方法的时间复杂度均为O(n),但双指针法将空间复杂度优化至O(1)。文章详细分析了两种实现的核心逻辑、性能差异和适用场景,并提供了完整的Java代码实现。

任岁月风干理想再也找不回真的我 919

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

力扣每日一题:1047. 删除字符串中的所有相邻重复项

目录题目:1047. 删除字符串中的所有相邻重复项示例提示解题思路解题代码解题感悟 题目:1047. 删除字符串中的所有相邻重复项 难度: 简单 题目: 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 示例 输入:"abbaca" 输出:"ca" 解释: 例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除

aruewds的博客 293

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

给出由小写字母组成的字符串S会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。"abbaca""ca"例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。提示 1。

m0_56090828的博客 476

Leetcode 1047:删除字符串中所有相邻重复项

题目描述 给出由小写字母组成的字符串S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 示例: 输入:"abbaca" 输出:"ca" 解释: 例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。...

weixin_35338624的博客 1053

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

1047. 删除字符串中的所有相邻重复项 题目描述 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 解题 /** * @param {string} S * @return {string} */ var removeDuplicat...

Janejie_Zhou的博客 395

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

该题解使用栈结构解决删除字符串中所有相邻重复项的问题。通过遍历字符串,将字符依次与栈顶比较:若不同则入栈,相同则弹出栈顶元素(消除相邻重复对)。最终栈中剩余字符即为结果。时间复杂度O(n),空间复杂度O(n)。代码实现用字符串模拟栈,直接比较并操作末尾字符即可。典型应用场景类似消消乐游戏的匹配消除机制。

2402_83315537的博客 385

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

给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。

grllery的博客 380

leetcode -1047 -删除字符串中的所有相邻重复项 -java版

文章目录题目代码 题目 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 示例: 输入:“abbaca” 输出:“ca” 解释: 例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之...

lingle1的博客 477

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

删除字符串中的所有相邻重复项题目链接描述示例代码 题目链接 https://leetcode-cn.com/problems/remove-all-adjacent-duplicates-in-string/ 描述 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 提示: 1 <= S.length <= 20000 S 仅由小写英文字母

博主是个二次元死肥宅~ 203

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

力扣 1047. 删除字符串中的所有相邻重复项 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 示例: 输入:“abbaca” 输出:“ca” 解释: 例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 “aaca”,其中又只有 “aa” 可以执行重复项删除操作,所以最后

moriliefeng3的博客 1061

【数据结构与算法】力扣 1047. 删除字符串中的所有相邻重复项

思路也很简单了,和之前做的括号匹配思路相同,不再赘述了。在完成所有重复项删除操作后返回最终的字符串。在 S 上反复执行重复项删除操作,直到无法继续删除。会选择两个相邻且相同的字母,并删除它们。给出由小写字母组成的字符串。

小秀的博客 422

leetcode【栈与队列—简单】 1047. 删除字符串中的所有相邻重复项

给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 示例: 输入:"abbaca" 输出:"ca" 解释: 例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。 提示: 1 <=

每个人都是独一无二的,把握好自己的节奏,跟着自己的心走。 451
上一篇: java数据结构与算法刷题-----LeetCode696. 计数二进制子串
下一篇: java数据结构与算法刷题-----LeetCode150. 逆波兰表达式求值
ydenergy_殷志鹏
博客等级 码龄7年 5887粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值