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

Java实现删除字符串中重复项的算法 在这个方法中,我们首先创建一个HashSet对象来存储不重复的字符。然后我们遍历字符串中的每个字符,如果该字符不存在于HashSet中,我们将其添加到HashSet并追加到StringBuilder对象中。我们可以逐个字符地检查字符串中的字符,并将不重复的字符追加到StringBuilder对象中。我们可以利用HashSet的特性来删除字符串中的重复项。在这个方法中,我们创建了一个StringBuilder对象来存储不重复的字符。在Java中,我们可以使用不同的方法来从字符串中删除重复项。 阅读详情

题目:

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

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

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

提示:

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

示例:
在这里插入图片描述
代码:

  • 解法一
class Solution {
    public String removeDuplicates(String S) {
        int n = S.length();	
        int i = 0;
        char[] c = new char[n];	//创建一个新数组 
        for (int j = 0; j < n; j++) {	//遍历字符串S
            if (i > 0 && c[i - 1] == S.charAt(j)) {	//标记i>0并且相邻的两个字符相等时
                i--;	//标记i--
            } else {	
                c[i++] = S.charAt(j);	//将当前字符存入数组c中
            }
        }
        return new String(c, 0, i);		//以字符串的形式返回数组中从角标0开始的i个元素
    }
}
  • 解法二
//与解法一思路相似  只是没有创建新数组 在原来数组上直接进行移动
class Solution {
    public String removeDuplicates(String S) {
        char[] cs = S.toCharArray();	//将字符串转化为字符数组
        int len = 0;
        for(int i = 0; i < cs.length; i++){
            char cc = cs[i];	
            if(len!=0 && cc==cs[len-1]) --len;  //当前字符和其相邻的前一个字符相等时 标记len--
            else cs[len++]=cc;	//否则 将当前字符赋给标记位置的值
        }
        char[] ret = Arrays.copyOf(cs,len);
        return new String(ret);	//返回结果
    }
}
java 去掉重复字符 三个方法 可以将字符串中的重复字符去除。程序设计精致,涉及到集合、集合foreach方法迭代、instanceof操作符的使用,适合Java初学者作为学习资料。 立即下载

相关推荐

linux下wayland协议修改键盘映射

linux下wayland协议,修改键盘映射,实验环境是Ubuntu24,其他wayland协议窗口应该也是可以的。

qq_15027967的博客 1069

day05:leetcode1047

/*1047. 删除字符串中的所有相邻重复项 easy 给出由小写字母组成的字符串S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。*/ // 字符串模拟栈 class Solution1047b { public String removeDuplicates(String s) { StringBuilder.

qq_52150810的博客 285

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

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

在下令狐的博客 4610

从芯片原厂到BSP工程师:技术转型与核心能力解析

嵌入式系统开发中,BSP(板级支持包)作为连接硬件与操作系统的关键层,其开发能力直接影响设备稳定性与性能。理解Linux内核架构(如内存管理、进程调度)和基础接口协议(I2C/SPI/USB)是BSP工程师的核心技能。在芯片验证与驱动开发场景中,多核异构系统调试与稳定性问题排查(如死机分析)展现了工程师的实战能力。随着物联网与智能设备发展,掌握从硬件适配到系统优化的全链路技术栈,成为职业发展的关键突破点。

weixin_36012152的博客 600

AD20 Channel-Offset Error 解决办法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言AD20 PCB相同电路模块ROOM格式复用时出现 Channel-Offset Error 解决办法一、问题现象二、解决办法 前言 AD20 PCB相同电路模块ROOM格式复用时出现 Channel-Offset Error 解决办法 一、问题现象 我们经常在使用Room格式快速布局相同模块电路时出现以下问题, 二、解决办法 相同模块电路PCB布局复制的过程网上有很多,这里不再做赘述,步骤都差不多,只说问题根源; 1:.

m0_47201213的博客 7634

【算法-Java实现】去除字符串中的重复字符

【算法-Java】去除字符串中的重复字符 一.问题描述: 1.输入:输入一个String字符串str。 2.输出:去除这个字符串str的重复字符,按照字符出现的顺序输出这个无重复的字符串result。 比如: 输入:“hkdhkdhkd" 输出:”hkd“ 输入:“abbbcccd” 输出:“abcd” 输入:”wxhxy“ 输出:“wxhy” 二.问题解答: 1.首先,按照上面给出的输入输出案例,我们知道,得到的输出结果字符串result

HKD的博客 9965

从仿真曲线到电路状态:用Cadence Virtuoso深度剖析CS放大器各个工作区(以电流源负载为例)

本文通过Cadence Virtuoso平台,深入剖析电流源负载CS放大器在不同工作区的表现,从仿真曲线解读电路状态。详细介绍了如何通过Vout-Vin直流扫描曲线判断MOS管工作区域(截止区、饱和区、线性区),并验证理论与仿真的一致性,提升模拟IC设计调试效率。

weixin_30940783的博客 442

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

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

殷志鹏的博客 482

【PLC】三菱plc控件安装 component Movedata had the following error ... Error Number:-119

Windows 10 专业版/企业版本版本号:22H2操作系统内部版本:19045.3448。

少莫千华 8006

使用OpenGL加载和显示DXF格式的3D模型文件编程

这样,我们就完成了使用OpenGL加载和显示DXF格式的3D模型文件的编程。通过实现加载函数和绘制回调函数,我们能够读取DXF文件的数据并使用OpenGL绘制出来。请注意,这只是一个简单的例子,仅涵盖了基本的加载和显示功能。在本文中,我们将探讨如何使用OpenGL编程加载和显示DXF(Drawing Exchange Format)格式的3D模型文件。DXF是一种通用的CAD(计算机辅助设计)文件格式,常用于存储和交换2D和3D图形数据。使用OpenGL加载和显示DXF格式的3D模型文件编程。

2301_79331421的博客 413

java相关-栈-删除字符串中所有相邻重复项-力扣1047

【代码】java相关-栈-删除字符串中所有相邻重复项-力扣1047。

sfdssdf123的博客 117

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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

文章目录1、题目要求2、思路分析3、执行代码4、问题反思4.1、if (top >= 0 && stack.charAt(top) == ch)5、小结 题目链接 https://leetcode-cn.com/problems/remove-all-adjacent-duplicates-in-string/ 1、题目要求 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项

CodeDoraemon的博客 413

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

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

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

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

力扣1047 删除字符串中所有相邻重复项 java实现

摘要:本文介绍了一种删除字符串中相邻重复字符的算法。通过使用栈结构遍历字符串,遇到与栈顶相同的字符时弹出栈顶元素,否则压入栈中。最终将栈中剩余字符拼接成结果字符串。该方法能有效处理类似"abbaca"的输入(输出"ca"),时间复杂度为O(n),空间复杂度为O(n)。文末提供了Java实现示例,使用双端队列模拟栈操作完成重复项删除功能。

m0_58648798的博客 381

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

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

sinb妃的博客 283

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

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

lingle1的博客 477

力扣1047 删除字符串中的所有相邻重复项 Java版本

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

m0_47066863的博客 635

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

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

zmx1952822326的博客 371

力扣1047删除字符串中的所有相邻重复项(java,栈解法)

力扣1047删除字符串中的所有相邻重复项(java,栈解法)

LNsupermali的博客 325

LeetCode1047—删除字符串中的所有相邻重复项(java版)

题目描述: 标签:栈 给出由小写字母组成的字符串S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 代码: 思路分析: 想到用栈解决,每个元素压入前都与栈顶的元素比较,如果相同就可以消除。但这里不是直接造一个栈对象,是用stringbuffer stack实现了栈,定义一个指向栈顶的指针top。 获取栈顶的元素用的是stack.charAt(top) 删除...

qq_40840749的博客 296

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

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

m0_51799816的博客 234

leetcode【每日一题】1047. 删除字符串中的所有相邻重复项 java

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

qq_43491066的博客 227

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

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

weixin_73858621的博客 259

LeetCode——1047. 删除字符串中的所有相邻重复项(Remove All Adjacent Duplicates In String)[简单]——分析及代码(Java)

LeetCode——1047. 删除字符串中的所有相邻重复项[Remove All Adjacent Duplicates In String][简单]——分析及代码[Java]一、题目二、分析及代码1. 栈(1)思路(2)代码(3)结果三、其他 一、题目 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 示例: 输入:"abbaca" 输出:"c

江南土豆的博客 280
上一篇: HTML(九)
下一篇: leetcode1021. 删除最外层的括号(java)
inferno devil
博客等级 码龄9年 54粉丝 172原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值